sarekhl
Goto Top

Teile des Dateinamens entfernen per Batch

Hallo zusammen,

ich habe in einem Ordner diverse Dateien nach dem Schema ePaper2010-01-09-210049.pdf. Das "ePaper" steht immer am Anfang, dann kommt das Datum in der Form Jahr-Monat-Tag und dann ein weiterer Bindestrich und die Uhrzeit des Downloads als sechsstellige Zahl. Ich möchte davon eigentlich nur das "2010-01-09.pdf" behalten.

Geht das mit einer Batch-Datei? Diese darf dann aber nur die Dateien bearbeiten, die mit "ePaper" beginnen, also die Dateien, deren Name bereits gekürzt ist, soll die Batch in Ruhe lassen ...


Hat jemand eine Idee? Bastla vielleicht?


Danke,
André

Content-Key: 133051

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

Printed on: April 26, 2024 at 16:04 o'clock

Member: bastla
bastla Jan 09, 2010 at 20:57:37 (UTC)
Goto Top
Hallo SarekHL!

Irgendwie fühle ich mich mit dieser Frage angesprochen ... face-wink

Grundsätzlich sollte das etwa so gehen (das "echo" vor dem "ren" sorgt dafür, dass zunächst der Befehl für das Umbenennen nur angezeigt, aber noch nicht ausgeführt wird):
@echo off & setlocal
set "Ordner=D:\Testordner"  

for %%i in ("%Ordner%\ePaper20*.pdf") do call :ProcessFile "%%i"  
pause
goto :eof

:ProcessFile
for /f "tokens=1-3 delims=-" %%a in ("%~n1") do set "Neu=%%a-%%b-%%c"  
set "Neu=%Neu:ePaper=%"  
echo ren %1 "%Neu%%~x1"  
goto :eof
Voaussetzung, damit das so funktionieren kann, ist zum einen die konsequente Verwendung des Benennungsschemas und, wichtiger, dass es für jeden Tag nur eine Datei gibt, da es ansonsten zur Namenskollision kommt ("ePaper2010-01-09-203212.pdf" und "ePaper2010-01-09-210049.pdf" müssten ja beide auf "2010-01-09.pdf" umbenannt werden).

Sollte die zweite Voraussetzung nicht zutreffen, müsstest Du einen Algorithmus für die Ermittlung einer alternativen Bezeichnung festlegen (oder einfach doch auch die Uhrzeit verwenden) ...

Grüße
bastla
Member: StefanKittel
StefanKittel Jan 09, 2010 at 22:35:41 (UTC)
Goto Top
Hallo,
da, dass hier ja statisch ist, würde ich einfach http://www.1-4a.com/rename verwenden.
Einfach die ersten 6 Zeichen entfernen und gut. Oder einfach "epaper" durch nichts ersetzen.
Stefan
Member: bastla
bastla Jan 09, 2010 at 23:29:53 (UTC)
Goto Top
@StefanKittel
einfach "epaper" durch nichts ersetzen.
Was meinst Du macht wohl die folgende Zeile face-wink
set "Neu=%Neu:ePaper=%"
Grüße
bastla
Member: StefanKittel
StefanKittel Jan 09, 2010 at 23:49:43 (UTC)
Goto Top
Hallo,
ich hab ja nun nicht gesagt, dass Deine Lösung nicht funktionieren würde.
Aber für was einmaliges würde ich das fertige Tool verwenden.
Stefan
Member: bastla
bastla Jan 10, 2010 at 08:16:07 (UTC)
Goto Top
@StefanKittel
Abgesehen davon, dass wir ja noch gar nicht wissen, ob es nur eine einmalige Aktion sein soll, habe ich auch überhaupt nix gegen die Verwendung "fertiger" Tools; so weit "fertig" ist der Batch aber eigentlich auch schon ... face-wink

Grüße
bastla
Member: SarekHL
SarekHL Jan 10, 2010 at 08:26:04 (UTC)
Goto Top
Richtig, Bastla ....

Es geht darum, daß ich in ein Verzeichnis täglich die aktuelle Ausgabe unserer Tageszeitung downloaden will. Leider haben die keinen FTP-Server, so daß ich nur per Browser herunterladen kann. Ich habe mir das schon mit dem "iMacro"-Plugin für Firefox weitgehend automatisiert, aber der Dateiname der vom Verlag generierten Files ist eben so blöd wie vorhin beschrieben.

Und nun will ich dann ab und zu (also nicht einmalig) die Batch über das Verzeichnis laufen lassen, um die noch nicht korrigierten Dateinamen anzupassen. Die bereits korrigierten Dateinamen sollen dabei unverändert bleiben, darum kann ich eben nicht einfach die ersten sechs und die letzten sieben Zeichen entfernen.

Ich probiere Dein Script nachher mal aus, auf jeden Fall sage ich schon mal Danke!