Supportnet / Forum / WindowsXP
Batch: Dateien umbenennen - Präfix entfernen
Frage
Hallo,
folgende Problemstellung....
es gibt eine Anzahl von x Dateien in einem Ordern, die ein Präfix tragen...
Beispiel:
_HA_123456789.txt
Alle tragen das selbe Präfix, aber sie sollen alle so umbenannt werden, dass nur noch die ID, also 123456789.txt im Dateinamen enthalten ist. Lässt sich sowas mittels einem Batch-Script realisieren? Wenn ja, wie?
Ein Freeware-Tool, egal welches, kommt leider im diesem Fall nicht in Frage.
Gruß,
dread_lord
Antwort 1 von batti-batch
Hallo dread_lord,
dieses Problem läßt sich mit einer Batch-Datei lösen.
Ich habe eine solche Datei für Dich erstellt. Diese Datei kannst Du im SET-Block mühelos Deinen Gegebenheiten anpassen:
Du kannst das Verzeichnis oder auch den Präfix ändern. Wenn Du irgendwann statt *.txt-Dateien andere Dateien verändern möchtest, ist das ebenfalls problemlos machbar.
Da aber das Ändern von Dateinamen nicht nur bei einer sehr großen Anzahl von Dateien schnell zu Problemen führen kann, solltest Du einen Testlauf in einem separatem Verzeichnis durchführen.
Eine Logdatei (deren Namen und Verzeichnis Du selbstverständlich ebenfalls Deinen Gegebenheiten anpassen kannst) informiert Dich über den Erfolg der Aktion.
Hier nun das komplette Programm:
Viel Spaß beim Testen.
Herzliche Grüße
batti-batch
dieses Problem läßt sich mit einer Batch-Datei lösen.
Ich habe eine solche Datei für Dich erstellt. Diese Datei kannst Du im SET-Block mühelos Deinen Gegebenheiten anpassen:
SET "quell_verzeichnis=Laufwerksbuchstabe und kompletter Pfad"
SET "praefix=_HA_"
SET "extension=txt"
SET "logfile=Dateiname incl. Laufwerksbuchstaben und komplettem Pfad"Du kannst das Verzeichnis oder auch den Präfix ändern. Wenn Du irgendwann statt *.txt-Dateien andere Dateien verändern möchtest, ist das ebenfalls problemlos machbar.
Da aber das Ändern von Dateinamen nicht nur bei einer sehr großen Anzahl von Dateien schnell zu Problemen führen kann, solltest Du einen Testlauf in einem separatem Verzeichnis durchführen.
Eine Logdatei (deren Namen und Verzeichnis Du selbstverständlich ebenfalls Deinen Gegebenheiten anpassen kannst) informiert Dich über den Erfolg der Aktion.
Hier nun das komplette Programm:
@ECHO off
SETLOCAL enabledelayedexpansion
REM
REM Testdatei
REM Entfernen eines Praefixes aus dem Dateinamen
REM
REM (c) batti-batch
REM erstellt am 20.11.2007
REM
REM https://supportnet.de/threads/1517567
REM
SET "quell_verzeichnis=Laufwerksbuchstabe und kompletter Pfad"
SET "praefix=_HA_"
SET "extension=txt"
SET "logfile=Dateiname incl. Laufwerksbuchstaben und komplettem Pfad"
ECHO Logdatei erzeugt von %~f0 >%logfile%
ECHO am %date% um %time% >>%logfile%
ECHO. >>%logfile%
FOR /f "tokens=1-6 delims= " %%i IN ('DIR /b /on "%quell_verzeichnis%\%praefix%*.%extension%" ^2^>^>%logfile%') DO (
SET dateiname=%%i& CALL :aendern !dateiname!
)
GOTO :weiter
:aendern
SET dateiname=!dateiname:%praefix%=!
IF EXIST %quell_verzeichnis%\!dateiname! (
ECHO Fehler^^! Datei !dateiname! existiert bereits.>>%logfile%
) ELSE (
REN %quell_verzeichnis%\%praefix%!dateiname! !dateiname!
IF EXIST %quell_verzeichnis%\!dateiname! (
ECHO Erfolg: Datei %praefix%!dateiname! umbenannt in !dateiname!>>%logfile%
) ELSE (
ECHO Fehler^^! Umbenennen der Datei %quell_verzeichnis%\!dateiname! nicht erfolgreich.>>%logfile%
)
)
GOTO :eof
:weiter
REM weitere Verarbeitung
ECHO.>>%logfile%
ECHO Logdatei beendet am %date% um %time%>>%logfile%
ECHO Fertig^^!Viel Spaß beim Testen.
Herzliche Grüße
batti-batch

