Bestimmte Zeichen per Batch aus Dateinamen entfernen
Ich bekomme Dateien, bei denen ich automatisch per Batch den Dateinamen ändern möchte. Nun besteht der erste Teil des Dateinamens aus immer den gleichen Zeichen, der zweite Namensteil aus variablen Zeichen. Also so: ABCDE_0001234500_zzzzzzzzzzz.txt wobei ABCDE_0001234500_ immer gleich ist und zzzzzzzz immer verschieden. Jetzt möchte ich die Nullen aus dem ersten Teil des Dateinamens enfernen. Das Ergebnis sollte dann so aussehen: ABCDE_12345_zzzzzzzzz.txt. wobei der zzzzzzz Teil variabel bleibt. Ich hab schon den halben Tag mit Rename und diversen Wildcards rumgefuscht, bekomme es aber nicht hin. Wer weiß Rat???
Please also mark the comments that contributed to the solution of the article
Content-Key: 276984
Url: https://administrator.de/contentid/276984
Printed on: April 24, 2024 at 16:04 o'clock
6 Comments
Latest comment
Hallo wollebee!
Wenn es wirklich nur darum ginge, aus dem konstanten "ABCDE_0001234500_" ein "ABCDE_12345_" zu machen, würde das in der "normalen Shell" (als Batch) so gehen:
Falls aus den ersten beiden Namensbestandteilen (also "ABCDE_0001234500_") alle Nullen entfernt werden sollen, dann so:
Das jeweilige "
Grüße
bastla
Wenn es wirklich nur darum ginge, aus dem konstanten "ABCDE_0001234500_" ein "ABCDE_12345_" zu machen, würde das in der "normalen Shell" (als Batch) so gehen:
@echo off & setlocal
pushd "D:\Dein Ordner"
for /f "tokens=1,2* delims=_" %%a in ('dir /b /a-d "ABCDE_0001234500_*.txt"') do echo ren "%%a_%%b_%%c" "%%a_12345_%%c"
popd
@echo off & setlocal
pushd "D:\Dein Ordner"
for /f "tokens=1,2* delims=_" %%a in ('dir /b/a-d "ABCDE_0001234500_*.txt"') do (
set "A=%%a" & set "B=%%b"
setlocal enabledelayedexpansion
echo ren "%%a_%%b_%%c" "!A:0=!_!B:0=!_%%c"
endlocal
)
popd
echo
" vor dem "ren
" sorgt dafür, dass der Befehl für das Umbenennen nur angezeigt wird - erst wenn es entfernt wird, werden die Namen tatsächlich geändert ...Grüße
bastla
Stimmt, geht auch in der Windows-Shell, nur eben nicht mehr wie unter reinem DOS.
Hab rumexperimentiert und folgendes geht auch:
@echo off
Setlocal enabledelayedexpansion
Set "Pattern=ABCDE_0001234500_"
Set "Replace=ABCDE_12345_"
For %%# in ("C:\Ordner\*.txt") Do (
Set "File=%%~nx#"
Ren "%%#" "!File:%Pattern%=%Replace%!"
)
Pause&Exit
Gibt wahrscheinlich noch zig weitere Möglichkeiten.
Hab rumexperimentiert und folgendes geht auch:
@echo off
Setlocal enabledelayedexpansion
Set "Pattern=ABCDE_0001234500_"
Set "Replace=ABCDE_12345_"
For %%# in ("C:\Ordner\*.txt") Do (
Set "File=%%~nx#"
Ren "%%#" "!File:%Pattern%=%Replace%!"
)
Pause&Exit
Gibt wahrscheinlich noch zig weitere Möglichkeiten.