Je veux faire une recherche / remplacer par un motif regex dans Windows batch sur un ensemble de fichiers. Ce sera quelque chose comme:
if the regex matches a line matches then replace it with a new line.
J’ai aussi besoin d’append une variable dans l’expression rationnelle pour simplement remplacer la valeur. Est-ce que quelqu’un sait comment traiter le script de lot? Je ne suis pas familier avec ça. Certains exemples peuvent être utiles.
Vous pouvez bénéficier de la commande findstr . Il supporte les expressions régulières avec une syntaxe limitée. Dis, tu as des fichiers
ignore_me.txt rename_me01.txt rename_me02.txt rename_me03.txt rename_me04.txt
Une commande
dir /b | findstr "rename_me[0-9][0-9]"
va sortir
rename_me01.txt rename_me02.txt rename_me03.txt rename_me04.txt
OK, pas très bon exemple, car vous pouvez le faire avec le bon vieux ?
joker Mon point est que le motif pour findstr
est une expression régulière.
Récemment, j’ai eu un problème similaire, mais je me suis ennuyé à essayer de trouver comment remplacer les modèles de regex. Je ne sais pas si cela est possible uniquement avec les commandes Windows natives. Donc, pour une solution plus simple, mais toujours native, je fais référence à Windows Scripting Host . Ma tâche était de trouver tous les fichiers qui ont dans leur nom une date au format jj.mm.aaaa et remplacer cette date par le courant.
Le script pour cela est:
Enregistré sous le nom u.wsf
et placé dans le dossier de ces fichiers. L’extension est associée à wscript
. En double-cliquant sur le fichier, elle s’exécute en mode graphique, mais peut également s’exécuter en mode ligne de commande:
cscript u.wsf
Les outils standard sur Unix pour cela sont sed
et Perl. Il y a des ports DOS / Windows des deux.
A:\> sed -i "s/foo/bar/g" file1 file2 file3 A:\> perl -pi -e "s/foo/bar/g" file1 file2 file3
remplacera “foo” par “bar” dans les fichiers nommés. Sed est plus ancien et l’option -i n’est pas standardisée, et Perl est beaucoup plus polyvalent, étant un langage de programmation complet, et son ensemble de fonctionnalités regex est bien meilleur, mais pour un travail unique, non plus, c’est bien.