webentwicklung-frage-antwort-db.com.de

Wie werden alle Leerzeichen durch Unterstriche in allen Dateinamen eines Ordners ersetzt?

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.

27

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

43
MC ND

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. 

13
Gray

Einfach als:

set filename=qwe qwe qwe asd.exe
set filename=%filename: =_%
10
n8b

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.

6
Jimadine

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 Unterverzeichnissen

Wie benutzt man?

  • Speichern Sie replace.bat und recursive.bat im selben Verzeichnis.
  • Ersetzen Sie .ext durch die gewünschte Dateierweiterung (.mp4) in replace.bat.
  • Doppelklicken Sie auf NUR recursive.bat-Datei.
2
Hamza Rashid

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.

0
Alex

gesetzte Daten =% Datum: ~ 6,4 %% Datum: ~ 3,2 %% Datum: ~ 0,2% _% Zeit: ~ 0,2 %% Zeit: ~ 3,2 %% Zeit: ~ 6, 2% Gesetzte Daten =% Daten: = 0%

0
ricarela

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.

0
DuckCowMooQuack