Ich versuche, alle Dateien in einem Ordner (alle EXE-Dateien) umzubenennen. Ich möchte alle Leerzeichen durch Unterstriche ersetzen, z. qwe qwe qwe asd.exe
bis qwe_qwe_qwe_asd.exe
.
Ich muss das über die Kommandozeile tun. Ich habe viele mögliche Lösungen ausprobiert, die ich im Internet und sogar auf dieser Website gefunden habe.
Ich muss dies auch in "einer einzelnen Zeile"/"einem Befehl" tun, aber ich akzeptiere alle funktionierenden Antworten.
Ein Liner
cmd /e:on /v:on /c "for %f in ("* *.exe") do (set "n=%~nxf" & set "n=!n: =_!" & ren "%~ff" "!n!" )"
Erstellen Sie eine Cmd-Instanz mit aktivierten Erweiterungen und verzögerter Erweiterung. Ersetzen Sie für jede Exe-Datei mit Leerzeichen im Namen Leerzeichen durch Unterstriche und benennen Sie die Datei mit dem neuen Namen um
Von hier angepasst:
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
Erstellen Sie eine Batchdatei (*.bat
) mit dem obigen Inhalt. Fügen Sie diese Batchdatei mit allen .exes in den Ordner ein. Die Leerzeichen werden beim Ausführen durch Unterstriche ersetzt.
Einfach als:
set filename=qwe qwe qwe asd.exe
set filename=%filename: =_%
Forfiles verwenden:
forfiles /m *.exe /C "cmd /e:on /v:on /c set \"[email protected]\" & if @ISDIR==FALSE ren @file !Phile: =_!"
Fügen Sie /s
nach forfiles
hinzu, um durch Unterordner zu rekursieren.
Basierend auf der Antwort von @Gray habe ich es erweitert, um Dateinamen in allen Unterverzeichnissen rekursiv zu ersetzen.
Datei 1: replace.bat
setlocal enabledelayedexpansion
set "pattern= "
set "replace=_"
for %%I in (*.ext) do (
set "file=%%~I"
ren "%%I" "!file:%pattern%=%replace%!"
)
Datei 2: recursive.bat
for /d /r . %%D in (*) do (
copy replace.bat "%%D\replace.bat"
cd "%%D"
replace.bat
del replace.bat
cd..
)
Dateien
replace.bat
enthält ein Skript, das space
durch underscore
ersetzt.recursive.bat
enthält ein Skript zur Rekursion in allen UnterverzeichnissenWie benutzt man?
replace.bat
und recursive.bat
im selben Verzeichnis..ext
durch die gewünschte Dateierweiterung (.mp4
) in replace.bat
.recursive.bat
-Datei.Speichern Sie die folgenden 2 Befehle in einer .bat
-Datei. Es wird " "
durch "_"
in allen Dateien und Ordnern rekursiv ersetzt, beginnend mit dem Ordner, in dem die Datei gespeichert ist.
forfiles /s /m *.* /C "cmd /e:on /v:on /c set \"[email protected]\" & if @ISDIR==FALSE ren @file !Phile: =_!"
forfiles /s /C "cmd /e:on /v:on /c set \"[email protected]\" & if @ISDIR==TRUE ren @file !Phile: =_!"
Hinweis: In der ersten Zeile wird dies für Dateien ausgeführt, in der zweiten Zeile für Ordner. Jede Leitung kann separat verwendet werden.
gesetzte Daten =% Datum: ~ 6,4 %% Datum: ~ 3,2 %% Datum: ~ 0,2% _% Zeit: ~ 0,2 %% Zeit: ~ 3,2 %% Zeit: ~ 6, 2% Gesetzte Daten =% Daten: = 0%
Kleine Änderung an Hamza Rashids Antwort. Speziell sein Skript recursive.bat.
recursive.bat
set orig=%cd%
for /d /r . %%D in (*) do (
copy replace.bat "%%D\replace.bat"
cd "%%D"
replace.bat
del replace.bat
cd %orig%
)
replace.bat bleibt gleich und die Anweisungen bleiben gleich.