8
votes

Fichier de lots: masque de fichier

Je n'ai pas trouvé de détails sur la façon d'utiliser le masque de fichier dans un fichier de commandes. Mon exigence, xxx

au lieu de sélectionner tous les fichiers journaux (* .log), comment sélectionner tous les fichiers journaux comportant un suffixe entier à la fin. Par exemple, parmi les fichiers suivants, xxx

J'ai besoin d'un masque de fichier pour sélectionner tous sauf Journal

J'ai essayé Test * .log , mais qui slèche test.log aussi. Il est préférable de ne pas inclure la partie de nom de fichier (test). Quelque chose comme, * <0-9d> .log .

merci.


0 commentaires

4 Réponses :


0
votes

essayer test? .log


1 commentaires

Ne fonctionnera pas - vous pouvez l'essayer dans une coquille: echo> test.log; echo> test1.log; Dir Test? .log trouvera 2 fichiers.



1
votes

comme Test? .log code> et même testez-vous ?? , la seule chose à obtenir ce que vous voulez serait un type de solution de contournement, par exemple:

if exist test.log ren test.log test.tmp
REM Do your stuff here, you can now use test*.log
if exist text.tmp ren test.tmp test.log


1 commentaires

Merci .. Je pourrais le faire fonctionner de cette façon, vous avez également confirmé qu'il n'y a pas de type de regex dans le script de lot.



2
votes

Vous pouvez essayer ce qui suit, que je pense personnellement est terrible, mais cela peut simplement être ce dont vous avez besoin: xxx

si le suffixe est vraiment n'importe quel entiteur Numéro dans une gamme potentiellement très grande, cela ne fonctionnera pas - à moins que vous niez plusieurs pour des boucles , où chacun ne s'occupe d'un seul chiffre et que vous modifiez le si il existe un test% i. Journal à quelque chose comme si existe test% A% b% c% d.log (pour quatre chiffres).

aussi, il n'y a pas besoin d'exécuter Somecommand dans une coque séparée ( cmd / c ), sauf si bien sûr, c'est en fait ce que vous devez faire.


1 commentaires

@johannes Rössel: que, gentil monsieur, serait vraiment waaaay plus intelligent que ce que j'ai suggéré. ;-) (J'ai appris quelque chose de nouveau aujourd'hui ...)



2
votes

Pour faire correspondre les noms de fichiers sur une expression régulière dans un fichier de commandes Vous pouvez utiliser la boucle suivante comme modèle:

for /F "delims=" %%I in ('"dir /B /S | findstr /E "\\test[0-9][0-9]*\.log""') do (
    echo %%I
)


0 commentaires