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.exeqwe_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.

25
demandé sur Mofi 2013-12-27 01:06:53

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

41
répondu MC ND 2013-12-26 21:58:00

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.

11
répondu Gray 2017-05-23 12:34:48

Simple:

set filename=qwe qwe qwe asd.exe
set filename=%filename: =_%
10
répondu n8b 2016-06-16 07:51:16

à 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.

6
répondu Jimadine 2014-11-14 23:46:18

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 remplacer spaceunderscore
  • recursive.bat contient un script pour faire de la récursivité dans tous les sous-répertoires

Comment utilisez?

  • Sauver replace.bat et recursive.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.
2
répondu Hamza Rashid 2018-03-27 17:35:03

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%

0
répondu ricarela 2015-08-19 12:19:15

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.

0
répondu Alex 2018-09-19 11:14:11