Comment remplacer tous les espaces par des underscores dans tous les noms de fichiers d'un dossier?
j'essaie de renommer tous les fichiers d'un dossier (tous .EXE.) Je veux remplacer tous les espaces par des caractères 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 que j'ai trouvé sur internet et même sur ce site, mais je ne peux pas le faire fonctionner.
j'ai aussi besoin de faire "une seule ligne" / "une commande", mais je vais accepter toutes les réponses.
7 réponses
Une seule ligne
cmd /e:on /v:on /c "for %f in ("* *.exe") do (set "n=%~nxf" & set "n=!n: =_!" & ren "%~ff" "!n!" )"
lancer une instance cmd, avec extensions et extensions retardées activées, et pour chaque fichier exe avec des espaces dans le nom, remplacer les espaces par des underscores et renommer 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éer un fichier batch (*.bat
) avec le contenu ci-dessus. Placez ce fichier batch dans le dossier avec tous les .exe et il remplacera les espaces par des underscores quand vous l'exécutez.
Simple:
set filename=qwe qwe qwe asd.exe
set filename=%filename: =_%
à l'Aide de forfiles:
forfiles /m *.exe /C "cmd /e:on /v:on /c set \"Phile=@file\" & if @ISDIR==FALSE ren @file !Phile: =_!"
Ajouter /s
après forfiles
répéter à travers les sous-dossiers.
basé sur la réponse de @Gray, Je l'ai étendu pour remplacer les noms de fichiers de façon récursive dans tous les sous-répertoires.
Fichier 1: remplacer.chauve-souris
setlocal enabledelayedexpansion
set "pattern= "
set "replace=_"
for %%I in (*.ext) do (
set "file=%%~I"
ren "%%I" "!file:%pattern%=%replace%!"
)
Fichier 2: récursive.chauve-souris
for /d /r . %%D in (*) do (
copy replace.bat "%%D\replace.bat"
cd "%%D"
replace.bat
del replace.bat
cd..
)
Fichiers
replace.bat
contient script pour remplacerspace
underscore
recursive.bat
contient un script pour faire de la récursivité dans tous les sous-répertoires
Comment utilisez?
- Sauver
replace.bat
etrecursive.bat
dans le même répertoire. - Remplacer
.ext
avec l'extension de fichier désirée pour correspondre (comme.mp4
)replace.bat
. - Double-cliquez sur (exécuter) SEULEMENT
recursive.bat
fichier.
set data=%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2% set data=%données: =0%
enregistrer les 2 commandes suivantes dans un .bat
fichier. Il remplacera " "
"_"
dans tous les fichiers et dossiers, récursivement, à 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: =_!"
Note: la première ligne fait cela pour les fichiers, et la seconde le fait pour les dossiers. Chaque ligne peut être utilisé séparément.