Script pour préfixer le nom de fichier avec le dossier

2

J'essaie de trouver un script qui fonctionnera sous Windows et préfixera tous les fichiers d'un dossier avec le nom du dossier contenant.

Par exemple, dans le dossier C:\FolderName1il y a 3 fichiers:

hello.jpg
test.txt
monday.docx

Une fois le script exécuté pour les fichiers ci-dessus, les noms seront les suivants:

FolderName1 - hello.jpg
FolderName1 - test.txt
FolderName1 - monday.docx

Je ne me soucie pas du langage de script utilisé, mais je n’ai trouvé aucune solution.

Merci d'avance.

Sam
la source

Réponses:

2

Combien y a-t-il de dossiers? Si un seul, vous pouvez renommer tous les fichiers avec une seule forboucle:

  1. Créer un C:\FolderName1_outdossier
  2. Ouvrir l'invite CMD
  3. for %I in (C:\FolderName1\*) do echo rename "C:\FolderName1\%~nxI" "C:\FolderName1_out\FolderName1 - %~nxI"
  4. Si renommer le plan semble correct, supprimez echode la commande ci-dessus et réexécutez

S'il y a beaucoup de dossiers, vous pouvez alors créer un fichier de commandes (remplacez% par %% et FolderName1 par% 1) et exécutez-le plusieurs fois en passant le nom du dossier en argument. Vous pouvez même exécuter ce fichier de commandes dans la boucle for:

for /D %J in (*) do echo call my_batch.cmd %~nxJ

Si la sortie semble correcte, supprimez-la echoet exécutez-la à nouveau.

Mikhail Kupchik
la source
0

Utilisation de PowerShell. Si vous avez besoin de changer les noms de fichiers uniquement dans un dossier, utilisez ceci:

gci c:\PathToFolder | Where {$_.psIsContainer -eq $false} | Rename-Item -NewName {$_.Directory.Name + " - " + $_.Name}

Il modifie tous les fichiers de ce dossier (mais exclut les dossiers du renommage) pour formater PathToFolder - Nom du fichier

Vous pouvez ajouter -Recursesi vous avez des dossiers imbriqués:

gci c:\PathToParentFolder -Recurse | Where {$_.psIsContainer -eq $false} | Rename-Item -NewName {$_.Directory.Name + " - " + $_.Name}

Assurez-vous d’exécuter d’abord sur un dossier de test ou ajoutez simplement -WhatIfà la fin de la commande pour voir les résultats potentiels sans détruire vos données :)

Siim K
la source