Supportnet Computer
Planet of Tech

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:

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: