Comment exécuter une commande batch Windows de manière récursive?

Par exemple, vous avez une commande rename dans un fichier de commandes et vous souhaitez exécuter ce fichier dans le répertoire en cours et tous les sous-répertoires.

Supposons que votre lot soit nommé quelque chose comme myrename.cmd , vous pouvez alors facilement faire ce qui suit:

 call myrename.cmd for /r /d %%x in (*) do ( pushd "%%x" call myrename.cmd popd ) 

La première ligne l’exécutera pour le répertoire en cours, la boucle for itérera récursivement ( /r ) sur tous les répertoires ( /d ) et exécutera la partie entre parenthèses. Ce que nous faisons à l’intérieur d’eux est de changer le répertoire en itérant avec pushd ce qui a la bonne propriété de pouvoir annuler ce répertoire avec popd puis d’exécuter la commande qui sera alors exécutée dans le répertoire. nous venons de passer à.

Cela suppose que le lot se trouve quelque part dans le chemin. Si ce n’est pas le cas et qu’il arrive que le fichier de commandes se trouve au-dessus, vous pouvez utiliser

 "%~dp0myrename.cmd"