1 votes

Comment ajouter un préfixe à tous les dossiers et sous-dossiers ? (Windows)

Re : Comment ajouter un préfixe à tous les fichiers et dossiers d'un dossier ? (Windows)

J'essaie de créer un fichier .bat qui renommera une structure de dossier prédéfinie avec un préfixe de numéro de projet, par exemple : nom du projet/admin - devient - 7000-01 nom du projet/7000-01 admin. Voici ce que j'ai fait jusqu'à présent :

@Echo off
pushd
for /d %%g in (*) do ren "%%g" "7000-01 %%g"

Ce qui ne fonctionne que pour le niveau supérieur, mais j'aimerais qu'il renomme tous les sous-dossiers (y compris ceux situés sous le niveau "admin" dans l'exemple ci-dessus).

J'ai lu ici - https://ss64.com/nt/for_d.html qu'en utilisant for /d /r devrait fonctionner pour renommer récursivement tous les sous-dossiers, mais je n'arrive pas à le faire fonctionner.

Pour info, le pushd est utilisé pour que le nom .bat reste le même.

0voto

JonathanDavidArndt Points 1174

Tu étais si proche ! La commande correcte est :

for /r /d %%g in (*) do ren "%%g" "7000-01 %%~ng"

Explication complète :

Comme vous l'avez mentionné, vous devez utiliser for /d /r pour travailler de manière récursive. ( https://ss64.com/nt/for_d.html )

Vérification de la syntaxe du ren o rename révèle qu'une syntaxe très spécifique est requise :

>ren /?
Renames a file or files.

RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.

Note that you cannot specify a new drive or path for your destination file.

Votre commande originale à l'intérieur du boucle for était évaluée à ren "FULL_PATH" "FULL_PATH" et il devrait en fait être ren "FULL_PATH" "SIMPLE_FILE_NAME"

Pour obtenir le nom du fichier sans extension ni chemin, utilisez ~n avec la variable ( https://ss64.com/nt/syntax-args.html )

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X