Batch Datei soll aus Datum eines Dateinamen ein Ordner-Archiv erstellen
Hallo Forumwelt,
wie ich im Titel schon erwähnt habe, bin ich gerade wieder im .bat Fieber.
Da ich aber noch nie so tief im Batch-Datei-Schreiben drin war hoffe ich auf kleine Hilfe.
Meine Aufgabe ist aus einem Dateinamen einer PDF Datei ein Archiv aufzubauen.
Der Dateiname baut sich wie folgt auf: 0000_240212_0000_00000_0000.pdf
Die Nullen sind sich ändernde Elemente die Zahlen sind das Datum. (Also heutiges Datum der 24. Feburar 2012)
Am allerbesten wäre es jetzt wenn ich es hinbekommen würde wenn die Batch den Dateinamen zerlegen, und anhand es zweiten "Blocks" das Datum auslesen kann.
Anschließend soll eine Ordnerstruktur anlegt werden, bzw.sollte die Batch checken ob eine andere Datei vorher schon den Ordner angelegt hat. (if Befehl)
Das Archiv würde ich mir wie folgt vorstellen
Archiv
Jahr
Monat
Tag
Wie gehe ich da am besten vor...?
Vielen Dank schonmal für die Hilfe...
wie ich im Titel schon erwähnt habe, bin ich gerade wieder im .bat Fieber.
Da ich aber noch nie so tief im Batch-Datei-Schreiben drin war hoffe ich auf kleine Hilfe.
Meine Aufgabe ist aus einem Dateinamen einer PDF Datei ein Archiv aufzubauen.
Der Dateiname baut sich wie folgt auf: 0000_240212_0000_00000_0000.pdf
Die Nullen sind sich ändernde Elemente die Zahlen sind das Datum. (Also heutiges Datum der 24. Feburar 2012)
Am allerbesten wäre es jetzt wenn ich es hinbekommen würde wenn die Batch den Dateinamen zerlegen, und anhand es zweiten "Blocks" das Datum auslesen kann.
Anschließend soll eine Ordnerstruktur anlegt werden, bzw.sollte die Batch checken ob eine andere Datei vorher schon den Ordner angelegt hat. (if Befehl)
Das Archiv würde ich mir wie folgt vorstellen
Archiv
Jahr
Monat
Tag
Wie gehe ich da am besten vor...?
Vielen Dank schonmal für die Hilfe...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 181000
Url: https://administrator.de/contentid/181000
Ausgedruckt am: 26.11.2024 um 12:11 Uhr
15 Kommentare
Neuester Kommentar
Aloha,
du möchtest es also alleine lösen?
In Ordnung, dann hier die Tipps:
Tutorial zur FOR-Schleife
du benötigst eine
greetz André
du möchtest es also alleine lösen?
In Ordnung, dann hier die Tipps:
Tutorial zur FOR-Schleife
du benötigst eine
for /f
mit _
als Trennzeichen, die den 2. Block als Variable setzt, dazu setzt du dann am Ende einfach mkdir Archiv\%Variable:~-2%\%Variable:~2,2%\%Variable:~0,2%
greetz André
Die Frage ist jetzt (gerade nach meinem 1. Posting) nicht dein Ernst, oder?
Entschuldige aber tust du mir den Gefallen und beschreibst dein Vorhaben mal genauer, denn von
ist ein verdammt weiter weg ... den ich wenn dann sowieso gleich mit
gehen würde
...
greetz André
P.S.: @bastla, hm abwarten
An welche Stelle und müssen Tokens ins "Klammern" oder in `diesen Dingern´ stehen?
?Entschuldige aber tust du mir den Gefallen und beschreibst dein Vorhaben mal genauer, denn von
Meine Aufgabe ist aus einem Dateinamen einer PDF Datei ein Archiv aufzubauen
nachFOR /R
ist ein verdammt weiter weg ... den ich wenn dann sowieso gleich mit
for /f "tokens=2 delims=_" %%s in ('dir /b /s "%Pfad%\*.pdf"') do ...
...
greetz André
P.S.: @bastla, hm abwarten
@skye
Wenn Du gleich zerlegst, fehlt Dir aber der Gesamtpfad - und da ja vermutlich doch mehr gewünscht ist, als nur eine Ordnerstruktur zu erstellen, wird der vermutlich noch gebraucht ...
Stringzerlegung (des Datums) ohne Unterprogramm und ohne geeignete Delimiter könnte ohne "
Grüße
bastla
for /f "tokens=2 delims=_" %%s in ('dir /b /s "%Pfad%\*.pdf"') do ...
Stringzerlegung (des Datums) ohne Unterprogramm und ohne geeignete Delimiter könnte ohne "
delayedExpansion
" etwas schwierig werden ...Grüße
bastla
@bastla
könnte und vermutlich ...
und zum DEp bleibe ich bei meinem
könnte und vermutlich ...
und zum DEp bleibe ich bei meinem
abwarten
Ich wähle Tor 2 und tausche den grünen Umschlag.
Aloha,
die Dateien liegen in einem Verzeichnis, ist das korrekt? Oder gibt es in
greetz André
Ok. cmd will mich heute verarschen, Unterprogramm funktioniert nicht, ich kapier's nicht,
Gut, dann nehme ich eben bastlas DEp, auch wenn ich es nicht mag
Ich bin heute mal so frei und gehe erst ein mal von einem Verzeichnis aus, wenn's nicht passt, der TE soll ja eigentlich nur angeregt werden
Hm, besser der TE setzt vor
Die Abfrage, ob ein Verzeichnis bereits existiert, erspare ich mir und unterdrücke einfach die Fehlermeldung, wenn dem so sein sollte ^__^
die Dateien liegen in einem Verzeichnis, ist das korrekt? Oder gibt es in
Eingang
auch Unterverzeichnisse? for /R oder nicht for /R, das ist hier die Option ;D
greetz André
Ok. cmd will mich heute verarschen, Unterprogramm funktioniert nicht, ich kapier's nicht,
Wert
bleibt beim 1. Mal leer und selbst if defined
wird ausgeführt, wenn Wert
leer ist und beim 2. Mal wird einfach der erste Wert
genommen, UARGH!!!!Gut, dann nehme ich eben bastlas DEp, auch wenn ich es nicht mag
@echo off & setlocal enabledelayedexpansion
set "Pfad=E:\Test"
set "Archiv=E:\Archiv"
set "Kopie=E:\svn"
for %%s in ("%Pfad%\????_??????_????_?????_????.pdf") do (
for /f "tokens=2 delims=_" %%m in ("%%~ns") do (
set "Wert=%%m"
mkdir "%Archiv%\!Wert:~-2!\!Wert:~2,2!\!Wert:~0,2!"2>nul
copy "%%s" "%Kopie%">nul
move "%%s" "%Archiv%\!Wert:~-2!\!Wert:~2,2!\!Wert:~0,2!"
)
)
pause
goto :eof
Ich bin heute mal so frei und gehe erst ein mal von einem Verzeichnis aus, wenn's nicht passt, der TE soll ja eigentlich nur angeregt werden
Hm, besser der TE setzt vor
move
noch ein echo
, zum Anschauen (eventuell auch vor mkdir
und copy
, wenn er's mag.Die Abfrage, ob ein Verzeichnis bereits existiert, erspare ich mir und unterdrücke einfach die Fehlermeldung, wenn dem so sein sollte ^__^
Aloha,
2>nul
Fehlerkanal wird ins Nirvana umgeleitet (unterdrückt), da ich mir die
beim Kopieren unterdrücke ich die normale Ausgabe (nicht die Fehlerausgabe), da das cmd-Fenster sonst voll mit 1 Datei(en) erfolgreich kopiert wäre ;D
greetz André
2>nul
Fehlerkanal wird ins Nirvana umgeleitet (unterdrückt), da ich mir die
if exist
-Abfrage der Verzeichnisse erspare (denn wenn mehrere Dateien dasselbe Datum aufweisen, existiert das Verzeichnis bei der 2. Datei ja bereits), würde eine Fehlermeldung kommen, dass das Verzeichnis bereits existiertbeim Kopieren unterdrücke ich die normale Ausgabe (nicht die Fehlerausgabe), da das cmd-Fenster sonst voll mit 1 Datei(en) erfolgreich kopiert wäre ;D
greetz André
@skye
Grüße
bastla
Gut, dann nehme ich eben bastlas DEp, auch wenn ich es nicht mag
Ich sag jetzt nix ... Grüße
bastla
[genauso OT]
Moin KetschupMajo,
Ich sach' ma so....
Ich will ja nicht kategorisch ausschliessen, dass es hier auch versprengte Einzel-Interna gibt in unserem schönen Fora.
meine selige Tante Gertrude nahm ja auch immer nur ein Antibiotika .
P.S Und rein interessehalber: wenn ihr als Familie auftretet, kommt ihr dann als KetschupsMajo oder als KetschupMajos oder als KetschupsMajos??
Na ja, Hauptsache jeder bleibt ein Individua.
Grüße
Biber
[/genauso OT]
Moin KetschupMajo,
Ich sach' ma so....
Ich will ja nicht kategorisch ausschliessen, dass es hier auch versprengte Einzel-Interna gibt in unserem schönen Fora.
meine selige Tante Gertrude nahm ja auch immer nur ein Antibiotika .
P.S Und rein interessehalber: wenn ihr als Familie auftretet, kommt ihr dann als KetschupsMajo oder als KetschupMajos oder als KetschupsMajos??
Na ja, Hauptsache jeder bleibt ein Individua.
Grüße
Biber
[/genauso OT]