J'essaie de renommer tous les fichiers d'un dossier (tous les fichiers .exe). Je souhaite remplacer tous les espaces par des traits de soulignement, par exemple. qwe qwe qwe asd.exe
à qwe_qwe_qwe_asd.exe
.
Je dois le faire en utilisant la ligne de commande. J'ai essayé beaucoup de solutions possibles trouvées sur Internet et même sur ce site, mais je ne peux pas le faire fonctionner.
Je dois aussi le faire en "une seule ligne"/"une commande", mais j'accepterai toutes les réponses valables.
Une ligne
cmd /e:on /v:on /c "for %f in ("* *.exe") do (set "n=%~nxf" & set "n=!n: =_!" & ren "%~ff" "!n!" )"
Créez une instance cmd, avec les extensions et l'expansion retardée activées, et pour chaque fichier exe avec des espaces dans le nom, remplacez les espaces par des traits de soulignement et renommez le fichier avec le nouveau nom.
Adapté d'ici:
https://stackoverflow.com/a/16129486/2000557
@echo off
Setlocal enabledelayedexpansion
Set "Pattern= "
Set "Replace=_"
For %%a in (*.exe) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)
Pause&Exit
Créez un fichier de commandes (*.bat
) avec le contenu ci-dessus. Placez ce fichier de commandes dans le dossier avec tous les fichiers .exe et il remplacera les espaces par des traits de soulignement lors de son exécution.
Simple comme:
set filename=qwe qwe qwe asd.exe
set filename=%filename: =_%
Utilisation de forfiles:
forfiles /m *.exe /C "cmd /e:on /v:on /c set \"Phile=@file\" & if @ISDIR==FALSE ren @file !Phile: =_!"
Ajoutez /s
après forfiles
pour recurse à travers les sous-dossiers.
Basé sur la réponse @Gray, je l'ai étendu pour remplacer les noms de fichiers de manière récursive dans tous les sous-répertoires.
Fichier 1: replace.bat
setlocal enabledelayedexpansion
set "pattern= "
set "replace=_"
for %%I in (*.ext) do (
set "file=%%~I"
ren "%%I" "!file:%pattern%=%replace%!"
)
Fichier 2: recursive.bat
for /d /r . %%D in (*) do (
copy replace.bat "%%D\replace.bat"
cd "%%D"
replace.bat
del replace.bat
cd..
)
Des dossiers
replace.bat
contient le script pour remplacer space
par underscore
recursive.bat
contient un script pour faire la récursion dans tous les sous-répertoiresComment utiliser?
replace.bat
et recursive.bat
dans le même répertoire..ext
par l'extension de fichier souhaitée pour qu'elle corresponde (comme .mp4
) dans replace.bat
.recursive.bat
.Enregistrez les 2 commandes suivantes dans un fichier .bat
. Il remplacera " "
par "_"
dans tous les fichiers et dossiers, de manière récursive, à partir du dossier où le fichier est stocké.
forfiles /s /m *.* /C "cmd /e:on /v:on /c set \"Phile=@file\" & if @ISDIR==FALSE ren @file !Phile: =_!"
forfiles /s /C "cmd /e:on /v:on /c set \"Phile=@file\" & if @ISDIR==TRUE ren @file !Phile: =_!"
Remarque: La première ligne le fait pour les fichiers et la deuxième pour les dossiers. Chaque ligne peut être utilisée séparément.
set data =% date: ~ 6,4 %% date: ~ 3,2 %% date: ~ 0,2% _% heure: ~ 0,2 %% heure: ~ 3,2 %% heure: ~ 6, 2% Données définies =% données: = 0%