wollebee
Goto Top

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???

Content-Key: 276984

Url: https://administrator.de/contentid/276984

Printed on: April 24, 2024 at 21:04 o'clock

Member: Qugart
Solution Qugart Jul 10, 2015, updated at Jul 13, 2015 at 06:37:11 (UTC)
Goto Top
Mit der "normalen" Shell geht das nicht, wohl aber mit Powershell.

get-childitem *.txt | rename-item -newname { $_.name -replace '0001234500','12345' }
Member: bastla
Solution bastla Jul 10, 2015, updated at Jul 13, 2015 at 06:37:59 (UTC)
Goto Top
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:
@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
Falls aus den ersten beiden Namensbestandteilen (also "ABCDE_0001234500_") alle Nullen entfernt werden sollen, dann so:
@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
Das jeweilige "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
Member: Qugart
Solution Qugart Jul 11, 2015, updated at Jul 13, 2015 at 06:36:15 (UTC)
Goto Top
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.
Member: wollebee
wollebee Jul 13, 2015 at 06:35:35 (UTC)
Goto Top
Ganz herzlichen Dank. Gleich die erste Antwort hat das Problem gelöst!
Member: wollebee
wollebee Jul 13, 2015 at 06:36:07 (UTC)
Goto Top
Vielen Dank!
Member: wollebee
wollebee Jul 13, 2015 at 06:38:38 (UTC)
Goto Top
Super, vielen Dank für die Mühe....