65883
Oct 22, 2008, updated at Oct 23, 2008 (UTC)
8448
8
0
Teile von Dateinamen löschen
Hallo zusammen,
leider gibt es kein mir bekanntes Programm, dass diese kleine Aufgabe erledigt:
ich habe über hunterte verschiedene Verzeichnisse auf einer Platte verteilt dateien liegen, die z.B. so ausschauen
asdfjkl_38485.txt
asdfjkl_4574.txt
asdfjkl_445649459.txt
...
Nun möchte ich den Anfangsteil "asdfjkl_" in einem Batch entfernen lassen. Sprich, die ganze Platte durchforsten
und alle Dateien, die den Anfangs-Suchstring "asdfjkl_" besitzen, eben diesen Anfangsteil löschen.
Ist das viel Arbeit sowas zu stricken? Ich wüßte nicht, wo ich anfangen sollte.
Gruß ...Frank
leider gibt es kein mir bekanntes Programm, dass diese kleine Aufgabe erledigt:
ich habe über hunterte verschiedene Verzeichnisse auf einer Platte verteilt dateien liegen, die z.B. so ausschauen
asdfjkl_38485.txt
asdfjkl_4574.txt
asdfjkl_445649459.txt
...
Nun möchte ich den Anfangsteil "asdfjkl_" in einem Batch entfernen lassen. Sprich, die ganze Platte durchforsten
und alle Dateien, die den Anfangs-Suchstring "asdfjkl_" besitzen, eben diesen Anfangsteil löschen.
Ist das viel Arbeit sowas zu stricken? Ich wüßte nicht, wo ich anfangen sollte.
Gruß ...Frank
Please also mark the comments that contributed to the solution of the article
Content-Key: 99984
Url: https://administrator.de/contentid/99984
Printed on: April 19, 2024 at 12:04 o'clock
8 Comments
Latest comment
Hallo truecolor!
Das sollte etwa so gehen:
Zum Testen könntest Du für den Basisordner (der am Ende immer einen "\" haben muss) einen Ordner mit nur wenigen Dateien angeben, ansonsten auch zB "D:\" für das gesamte Laufwerk "D:".
Sollte eine Datei nicht umbenannt werden können, weil eine gleichnamige Datei bereits existiert, wird eine entsprechende Meldung ausgegeben.
Grüße
bastla
Das sollte etwa so gehen:
@echo off & setlocal
set "Basis=D:\Testordner\mit wenigen Dateien\"
set "Prefix=asdfjkl"
set "Delimiter=_"
set "Ext=.txt"
for /f "delims=" %%i in ('dir /s /b /a-d "%Basis%%Prefix%%Delimiter%*%Ext%"') do for /f "tokens=1* delims=%Delimiter%" %%a in ("%%~nxi") do if not exist "%%~dpi%%b" (echo ren "%%i" "%%b") else (echo "%%i" konnte nicht umbenannt werden)
Sollte eine Datei nicht umbenannt werden können, weil eine gleichnamige Datei bereits existiert, wird eine entsprechende Meldung ausgegeben.
Grüße
bastla
Hallo truecolor!
Versuch es damit:
Grüße
bastla
Die Dateien sehen so aus: ...
Ist ja kaum ein Unterschied ... Versuch es damit:
@echo off & setlocal
set "Basis=D:\"
set "Prefix=asdf jkl"
set "Delimiter= "
set "Ext=.*"
for /f "delims=" %%i in ('dir /s /b /a-d "%Basis%%Prefix%%Delimiter%*%Ext%"') do for /f "tokens=2* delims=%Delimiter%" %%a in ("%%~nxi") do if not exist "%%~dpi%%b" (echo ren "%%i" "%%b") else (echo %%i konnte nicht umbenannt werden)
bastla
Hallo truecolor!
Gewohnheitsmäßig schreibe ich bei eher heiklen Batches ein "echo" vor den eigentlichen Befehl, um gefahrlos testen zu können, da (wie Du feststellen konntest ) dann eben der Befehl nur angezeigt wird.
Genau dieses "echo" steht immer noch vor dem für das Umbenennen zuständigen
- also einfach entfernen, und dann kannst Du auch den Ernstfall testen ...
Grüße
bastla
Gewohnheitsmäßig schreibe ich bei eher heiklen Batches ein "echo" vor den eigentlichen Befehl, um gefahrlos testen zu können, da (wie Du feststellen konntest ) dann eben der Befehl nur angezeigt wird.
Genau dieses "echo" steht immer noch vor dem für das Umbenennen zuständigen
ren "%%i" "%%b"
Grüße
bastla