Bestimmte Zeichen einer Datei umbenennen mit Batch
Ich möchte Dateien in einem Ordner umbenennen und zwar nur bestimmte Zeichen davon.
Hallo Jungs,
nur interessehalber möchte ich gern bestimmte Zeichen(Strings) einer Datei umbenennen.
Zum Beispiel:
Ich habe in einem Ordner C:\Test\
einige Dateien. Die heißen:
1_2_3_4.txt
5_6_7_8.txt
9_10_11_12.txt
13_14_15_16.txt
usw.
Nun stört mich der Unterstrich "_" und ich möchte diesen durch ein Leerzeichen " " in einem Rutsch mittels Batch ersetzen.
Wie man die Dateien in einem Ordner auflistet ist mir klar. Da hätte ich:
Wie bekomme ich aber die Variable "%%f" dazu, dass ich diese in eine neue Variable einlese und dabei den Unterstrich durch ein
Leerzeichen ersetze.
Das hier
funktioniert scheinbar nicht.
Dann müßte ich ja nur noch schreiben:
Aber da "beist" sich ja was.
In VBS läßt sich das einfach lösen. Da habe ich auch eine Lösung dafür. Kein Problem! Nur wie macht man das mit Batch??
Hier eine Lösung in VBS:
Vielen Dank für eure Mühe und
viele Grüße
Tsuki
Hallo Jungs,
nur interessehalber möchte ich gern bestimmte Zeichen(Strings) einer Datei umbenennen.
Zum Beispiel:
Ich habe in einem Ordner C:\Test\
einige Dateien. Die heißen:
1_2_3_4.txt
5_6_7_8.txt
9_10_11_12.txt
13_14_15_16.txt
usw.
Nun stört mich der Unterstrich "_" und ich möchte diesen durch ein Leerzeichen " " in einem Rutsch mittels Batch ersetzen.
Wie man die Dateien in einem Ordner auflistet ist mir klar. Da hätte ich:
@Echo OFF
for /F "tokens=*" %%f in ('dir /b *.*') do (
echo %%f
)
Wie bekomme ich aber die Variable "%%f" dazu, dass ich diese in eine neue Variable einlese und dabei den Unterstrich durch ein
Leerzeichen ersetze.
Das hier
Set Neu=%f:_= "
Dann müßte ich ja nur noch schreiben:
ren %%f %neu%
Aber da "beist" sich ja was.
In VBS läßt sich das einfach lösen. Da habe ich auch eine Lösung dafür. Kein Problem! Nur wie macht man das mit Batch??
Hier eine Lösung in VBS:
Dim FSO, Ordner, Von , Nach
Ordner = InputBox("Bitte Pad eingeben!")
Von = InPutBox("Bitte Suchzeichen eigeben!", , "_")
Nach = InputBox("Bitte Ersetzungszeichen eingeben!", ," ")
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each File In FSO.GetFolder(Ordner).Files
a = Replace(File.Name, von , nach)
Wscript.Echo "Benenne: " & File.Name & "um nach : " & a
FSO.MoveFile File.Name , a
Next
Vielen Dank für eure Mühe und
viele Grüße
Tsuki
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 154119
Url: https://administrator.de/contentid/154119
Ausgedruckt am: 24.11.2024 um 00:11 Uhr
4 Kommentare
Neuester Kommentar
Moin Tsuki.
naja eigentlich hasse ich ja leerzeichen in fast allem....
kennst du doch sicher...
kennst du auch
Gruß
naja eigentlich hasse ich ja leerzeichen in fast allem....
for /f "tokens=1-5 delims=_" %%a in ('dir /b *_*') do echo %%a
kennst du doch sicher...
for /f "tokens=1-5 delims=_." %a in ('dir /b *_*.*.txt') do echo %b %c %d
for /f "tokens=1-5 delims=_." %%a in ('dir /b *_*.*.txt') do (
if not "%e"=="" if not "%%e"=="txt" ren "%%a_%%b_%%c_%%d_%%e.txt" "%%a %%b %%c %%d %%e.txt"
rem usw
)
Gruß
@softmeister
... da würde dann eine "gewöhnliche" Variable zusätzlich benötigt - also etwa:
oder, wenn es keine Dateinamen mit "!" im Namen gibt, auch:
Grüße
bastla
P.S.: Beide Vorschläge ungetestet ...
das geht 100%:
... wenn Du eine Variable %f% erfindest - mit der Schleifenvariablen %%f allerdings nicht ...... da würde dann eine "gewöhnliche" Variable zusätzlich benötigt - also etwa:
@echo off & setlocal
for /f "delims=" %%f in ('dir /b /a-d *.txt') do set "DateinameAlt=%%f" & call :ProcessFile "%%f"
goto :eof
:ProcessFile
ren %1 "%DateinameAlt:_= %"
goto :eof
@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%f in ('dir /b /a-d *.txt') do set "DateinameAlt=%%f" & ren "%%f" "!DateinameAlt:_= !"
bastla
P.S.: Beide Vorschläge ungetestet ...