Problem mit Batch beim Umbenennen von Leerzeichen
Hallo Alle,
Ich habe ein kleines Problem mit einem Batch Script beim Umbenennen.
Die Beschreibung.
Ich habe eine Batch (Unter Vista) gemacht die bei allen Dateien die
ein Leerzeichen haben das in ein "_" (Underline) umbenennt.
Das Ergbenis ist seltsam.
Es geht sofort wenn ich in einem Directory wie C:\Dateien\ oder D:\Bilder\ bin.
Wenn ich aber im Wurzel Verzeichnis wie C:\ oder D:\ das Batch aufrufe
bekomme ich immer den Fehler "Datei nicht gefunden" und es geht in einen Endlos Loop.
Was mache ich falsch oder was muß ich noch machen damit es überall geht?
Hier ist das Batch
@echo on
:begin_leerzeichen
for /F "tokens=1,*" %%i in ('dir /b "* *"') do ren "%%i %%j" "%%i_%%j"
if exist "* *" goto begin_leerzeichen
Grüße
Sabine
Ich habe ein kleines Problem mit einem Batch Script beim Umbenennen.
Die Beschreibung.
Ich habe eine Batch (Unter Vista) gemacht die bei allen Dateien die
ein Leerzeichen haben das in ein "_" (Underline) umbenennt.
Das Ergbenis ist seltsam.
Es geht sofort wenn ich in einem Directory wie C:\Dateien\ oder D:\Bilder\ bin.
Wenn ich aber im Wurzel Verzeichnis wie C:\ oder D:\ das Batch aufrufe
bekomme ich immer den Fehler "Datei nicht gefunden" und es geht in einen Endlos Loop.
Was mache ich falsch oder was muß ich noch machen damit es überall geht?
Hier ist das Batch
@echo on
:begin_leerzeichen
for /F "tokens=1,*" %%i in ('dir /b "* *"') do ren "%%i %%j" "%%i_%%j"
if exist "* *" goto begin_leerzeichen
Grüße
Sabine
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 132717
Url: https://administrator.de/forum/problem-mit-batch-beim-umbenennen-von-leerzeichen-132717.html
Ausgedruckt am: 28.04.2025 um 00:04 Uhr
3 Kommentare
Neuester Kommentar
Hallo sabine1 und willkommen im Forum!
Ich würde das eher so versuchen:
Damit sollte es (durch ein zusätzliches "
Grüße
bastla
Ich würde das eher so versuchen:
@echo on & setlocal
for /F "delims=" %%i in ('dir /b /a-d "* *" 2^>nul') do call :ProcessFile "%%i"
goto :eof
:ProcessFile
set "Name=%~nx1"
ren %1 "%Name: =_%"
goto :eof
/s
" beim "dir
") dann auch möglich sein, gleich alle Dateien in ev Unterordnern mit zu bearbeiten ...Grüße
bastla
Hallo sabine1!
Das könnte dann etwa so aussehen:
Noch Zum Thema "
[Edit] Ev ließe sich das Reduzieren mehrfacher "_" mit der folgenden, vor Zeile 13 einzufügenden, zusätzlichen Zeile noch etwas beschleunigen:
[/Edit]
Grüße
bastla
P.S.: Falls Du die "Code"-Formatierung bereits gesucht haben solltest: siehe ...
Das könnte dann etwa so aussehen:
@echo on & setlocal
for /F "delims=" %%i in ('dir /b /a-d 2^>nul') do call :ProcessFile "%%i"
goto :eof
:ProcessFile
set "Name=%~nx1"
set "Name=%Name: =_%
set "Name=%Name:(=_%
set "Name=%Name:)=_%
set "Name=%Name:-=_%
:Loop
set "Name=%Name:__=_%"
echo %Name%|findstr "__">nul && goto :Loop
ren %1 "%Name%"
goto :eof
%~nx1
": Damit wird aus dem Parameter 1 nur der Dateiname und die Extension entnommen - solange Du das "dir
" ohne "/s
" verwendest, wäre diese Schreibweise nicht nötig; wenn allerdings als "%1
" ein vollständiger Pfad übergeben wird, muss für das Umbenennen daraus Name + Extension extrahiert werden (also aus zB "D:\Test\Unterordner\name-( Name ).pdf" wird dann nur "name-( Name ).pdf" verwendet). Näheres dazu findest Du ziemlich am Ende der Hilfe zu "for
" ...[Edit] Ev ließe sich das Reduzieren mehrfacher "_" mit der folgenden, vor Zeile 13 einzufügenden, zusätzlichen Zeile noch etwas beschleunigen:
set "Name=%Name:___=_%"
Grüße
bastla
P.S.: Falls Du die "Code"-Formatierung bereits gesucht haben solltest: siehe ...