Question

J'ai vu des gens faire ça à Perl, mais je me demande s'il y a un moyen de le faire via un lot? Il est intégré à Windows, donc je pense qu'il serait plus utile de savoir comment le faire avec un script par lots. Il ne nécessite rien d'installer sur un ordinateur.

Un exemple de nom d'entrée: myFile_55Un exemple de modèle de sortie: changer myFile à picture et réduire le nombre de 13. Un exemple de sortie: picture_42.

Comment aborderiez-vous cela? Je connais une commande par lots à renommer:

ren myFile_55 picture_42.

Donc, si j'ai un fichier nommé renamer.bat, Je peux ajouter ce qui suit:

for /r %%x in (%1) do ren "%%x" %2.

Ensuite, je peux taper cette commande:

renamer.bat myfile* picture*.

Je ne sais pas comment réduire les chiffres, cependant.

Pas de solution correcte

Autres conseils

Vous pouvez probablement placer le nom du fichier d'origine via une boucle pour et extraire le nom et les numéros, faire le calcul sur les numéros, puis le recommencer avec le nouveau nom et le nouveau numéro. Tant que le format de nom de fichier est name_number Vous pouvez utiliser ceci:

REM Allow for numbers to be iterated within the for-loop i.e. the i - z
SETLOCAL ENABLEDELAYEDEXPANSION
SET i=0
SET z=13
SET newName=picture
SET workDir=C:\Path\To\Files

REM Given that filenames are in the format of 'Name_number', we're going to extract 'number
REM and set it to the i variables, then subtract it by 13, then rename the original file
REM to what the newName_x which if the filename was oldName_23 it would now be newName_10
FOR /r %%X in (%1) do (
  FOR /F "tokens=1-2 delims=_" %%A IN ("%%X") DO (
    SET i=%%B
    SET /A x=!i! - %z%

    REM ~dpX refers to the drive and path of the file
    REN "%%~dpX\%%A_%%B" "%newName%_!x!"
  )
)

Edit: modifié le REN Commande pour inclure le lecteur et le chemin d'accès du fichier d'origine. Changé de la mineure x au majuscules X pour ne pas confondre %%~dpX.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top