Batch zum Dateien bewegen
Das hier wird mein erster Beitrag bei euch =)
Bedanke mich schonmal im Vorraus für eure Antworten.
Ich hätte ein kleines Problem mit einem Script.
Meine Aufgabe war es, ein kleines Script zu schreiben, wenn ich hier Falsch bin, bitte verschieben.
SO, die Aufgaben stellung war folgende: Ein Kunde von uns bekommt in einen bestimten Ordner jede Minute eine Datei.
Da sich dieser Ordner in Kürzester Zeit selbst zu spamt, darf ich da ordnung reinbringen.
http://forum.fachinformatiker.de/windows-betriebssysteme/129906-batch-d ...
Meine Dateien haben im Moment immer das Format : test_31.03.10.13.30.abc
test = namen , dann das Datum und die hinteren 2 Zahlen sind die Uhrzeit. Am Ende hats noch platz für einen Kommentar.
Ich solte 3 verschiedene Skripte schreiben, eins um die Dateien nach Stunden (1 Uhr-24Uhr), eins nach Tagen (01Tag-30Tag/31Tag ) und eins nach Monaten ( Januar - Dezember) zu sortieren.
Dazu solten immer die passenden Ordner angelegt werden wenn sie nicht schon vorhanden sind.
Die Stunden und die Monate funktionieren Wunderbar, aber mit den Tagen hab ich im mom ein Problem.
Hier mal mein ,,Monatsscript" :
Code:
-- Dateien sortieren -th
-- Ordner anlegen fals nicht vorhanden
if not exist "J:\Script Jochen\temp\Januar" md "J:\Script Jochen\temp\Januar"
if not exist "J:\Script Jochen\temp\Februar" md "J:\Script Jochen\temp\Februar"
if not exist "J:\Script Jochen\temp\Maerz" md "J:\Script Jochen\temp\Maerz"
if not exist "J:\Script Jochen\temp\April" md "J:\Script Jochen\temp\April"
if not exist "J:\Script Jochen\temp\Mai" md "J:\Script Jochen\temp\Mai"
if not exist "J:\Script Jochen\temp\Juni" md "J:\Script Jochen\temp\Juni"
if not exist "J:\Script Jochen\temp\Juli" md "J:\Script Jochen\temp\Juli"
if not exist "J:\Script Jochen\temp\August" md "J:\Script Jochen\temp\August"
if not exist "J:\Script Jochen\temp\September" md "J:\Script Jochen\temp\September"
if not exist "J:\Script Jochen\temp\Oktober" md "J:\Script Jochen\temp\Oktober"
if not exist "J:\Script Jochen\temp\November" md "J:\Script Jochen\temp\November"
if not exist "J:\Script Jochen\temp\Dezember" md "J:\Script Jochen\temp\Dezember"
--log file erstellen
dir /b *_* >files.log
--log file auslesen
For /F "delims=. Tokens=1-4*" %%i in (Files.log) do (
--Dateien verschieben
If %%j==01 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Januar"
If %%j==02 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Februar"
If %%j==03 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Maerz"
If %%j==04 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\April"
If %%j==05 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Mai"
If %%j==06 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Juni"
If %%j==07 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Juli"
If %%j==08 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\August"
If %%j==09 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Septemper"
If %%j==10 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Oktober"
If %%j==11 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\November"
If %%j==12 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Dezember"
)
--log file löschen
del files.log
Kurz gesagt: es schaut welchen Dateinamen die Dateien in dem Ordner ( hier Temp auf meinem USB-Stick ( deshalb J:\ da ich mich auch daheim verscuhen wolte ))liegen und speichert die Namen als .txt ab.
Danach wird dieser an den Punkten sozusagen aufgespalten und die einzelnen Werte werden benutzt.
Hier mein ,,Tagesscript"
Code:
-- Dateien sortieren -th
-- Ordner anlegen fals nicht vorhanden
if not exist "J:\Script Jochen\temp\01Tag" md "J:\Script Jochen\temp\01Tag"
if not exist "J:\Script Jochen\temp\02Tag" md "J:\Script Jochen\temp\02Tag"
if not exist "J:\Script Jochen\temp\03Tag" md "J:\Script Jochen\temp\03Tag"
if not exist "J:\Script Jochen\temp\04Tag" md "J:\Script Jochen\temp\04Tag"
if not exist "J:\Script Jochen\temp\05Tag" md "J:\Script Jochen\temp\05Tag"
if not exist "J:\Script Jochen\temp\06Tag" md "J:\Script Jochen\temp\06Tag"
if not exist "J:\Script Jochen\temp\07Tag" md "J:\Script Jochen\temp\07Tag"
if not exist "J:\Script Jochen\temp\08Tag" md "J:\Script Jochen\temp\08Tag"
if not exist "J:\Script Jochen\temp\09Tag" md "J:\Script Jochen\temp\09Tag"
if not exist "J:\Script Jochen\temp\10Tag" md "J:\Script Jochen\temp\10Tag"
if not exist "J:\Script Jochen\temp\11Tag" md "J:\Script Jochen\temp\11Tag"
if not exist "J:\Script Jochen\temp\12Tag" md "J:\Script Jochen\temp\12Tag"
if not exist "J:\Script Jochen\temp\13Tag" md "J:\Script Jochen\temp\13Tag"
if not exist "J:\Script Jochen\temp\14Tag" md "J:\Script Jochen\temp\14Tag"
if not exist "J:\Script Jochen\temp\15Tag" md "J:\Script Jochen\temp\15Tag"
if not exist "J:\Script Jochen\temp\16Tag" md "J:\Script Jochen\temp\16Tag"
if not exist "J:\Script Jochen\temp\17Tag" md "J:\Script Jochen\temp\17Tag"
if not exist "J:\Script Jochen\temp\18Tag" md "J:\Script Jochen\temp\18Tag"
if not exist "J:\Script Jochen\temp\19Tag" md "J:\Script Jochen\temp\19Tag"
if not exist "J:\Script Jochen\temp\20Tag" md "J:\Script Jochen\temp\20Tag"
if not exist "J:\Script Jochen\temp\21Tag" md "J:\Script Jochen\temp\21Tag"
if not exist "J:\Script Jochen\temp\22Tag" md "J:\Script Jochen\temp\22Tag"
if not exist "J:\Script Jochen\temp\23Tag" md "J:\Script Jochen\temp\23Tag"
if not exist "J:\Script Jochen\temp\24Tag" md "J:\Script Jochen\temp\24Tag"
if not exist "J:\Script Jochen\temp\25Tag" md "J:\Script Jochen\temp\25Tag"
if not exist "J:\Script Jochen\temp\26Tag" md "J:\Script Jochen\temp\26Tag"
if not exist "J:\Script Jochen\temp\27Tag" md "J:\Script Jochen\temp\27Tag"
if not exist "J:\Script Jochen\temp\28Tag" md "J:\Script Jochen\temp\28Tag"
if not exist "J:\Script Jochen\temp\29Tag" md "J:\Script Jochen\temp\29Tag"
if not exist "J:\Script Jochen\temp\30Tag" md "J:\Script Jochen\temp\30Tag"
if not exist "J:\Script Jochen\temp\31Tag" md "J:\Script Jochen\temp\31Tag"
--log file erstellen
dir /b *_* >files.log
--log file auslesen
--Dateien verschieben
For /F "delims=. Tokens=1-4*" %%i in (Files.log) do (
If %%i==01 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\01Tag"
If %%i==02 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\02Tag"
If %%i==03 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\03Tag"
If %%i==04 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\04Tag"
If %%i==05 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\05Tag"
If %%i==06 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\06Tag"
If %%i==07 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\07Tag"
If %%i==08 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\08Tag"
If %%i==09 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\09Tag"
If %%i==10 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\10Tag"
If %%i==11 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\11Tag"
If %%i==12 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\12Tag"
If %%i==13 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\13Tag"
If %%i==14 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\14Tag"
If %%i==15 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\15Tag"
If %%i==16 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\16Tag"
If %%i==17 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\17Tag"
If %%i==18 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\18Tag"
If %%i==19 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\19Tag"
If %%i==20 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\20Tag"
If %%i==21 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\21Tag"
If %%i==22 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\22Tag"
If %%i==23 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\23Tag"
If %%i==24 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\24Tag"
If %%i==25 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\25Tag"
If %%i==26 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\26Tag"
If %%i==27 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\27Tag"
If %%i==28 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\28Tag"
If %%i==29 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\29Tag"
If %%i==30 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\30Tag"
If %%i==31 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\31Tag"
)
--log file löschen
del files.log
pause
Wenn ich die änderung hier mache
;; If %%i==test_31 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\31Tag";;
funktioniert es. Aber wenn es Dann in die Richtige Projektumgebung kommt müste man wieder alles änder.
Einfach ein ,*, davorsetzn funktioniert auch nicht.
Gibt es andere Platzhalter ?
Hoffe jemand hat ne Idee.
Greetz
Bedanke mich schonmal im Vorraus für eure Antworten.
Ich hätte ein kleines Problem mit einem Script.
Meine Aufgabe war es, ein kleines Script zu schreiben, wenn ich hier Falsch bin, bitte verschieben.
SO, die Aufgaben stellung war folgende: Ein Kunde von uns bekommt in einen bestimten Ordner jede Minute eine Datei.
Da sich dieser Ordner in Kürzester Zeit selbst zu spamt, darf ich da ordnung reinbringen.
http://forum.fachinformatiker.de/windows-betriebssysteme/129906-batch-d ...
Meine Dateien haben im Moment immer das Format : test_31.03.10.13.30.abc
test = namen , dann das Datum und die hinteren 2 Zahlen sind die Uhrzeit. Am Ende hats noch platz für einen Kommentar.
Ich solte 3 verschiedene Skripte schreiben, eins um die Dateien nach Stunden (1 Uhr-24Uhr), eins nach Tagen (01Tag-30Tag/31Tag ) und eins nach Monaten ( Januar - Dezember) zu sortieren.
Dazu solten immer die passenden Ordner angelegt werden wenn sie nicht schon vorhanden sind.
Die Stunden und die Monate funktionieren Wunderbar, aber mit den Tagen hab ich im mom ein Problem.
Hier mal mein ,,Monatsscript" :
Code:
-- Dateien sortieren -th
-- Ordner anlegen fals nicht vorhanden
if not exist "J:\Script Jochen\temp\Januar" md "J:\Script Jochen\temp\Januar"
if not exist "J:\Script Jochen\temp\Februar" md "J:\Script Jochen\temp\Februar"
if not exist "J:\Script Jochen\temp\Maerz" md "J:\Script Jochen\temp\Maerz"
if not exist "J:\Script Jochen\temp\April" md "J:\Script Jochen\temp\April"
if not exist "J:\Script Jochen\temp\Mai" md "J:\Script Jochen\temp\Mai"
if not exist "J:\Script Jochen\temp\Juni" md "J:\Script Jochen\temp\Juni"
if not exist "J:\Script Jochen\temp\Juli" md "J:\Script Jochen\temp\Juli"
if not exist "J:\Script Jochen\temp\August" md "J:\Script Jochen\temp\August"
if not exist "J:\Script Jochen\temp\September" md "J:\Script Jochen\temp\September"
if not exist "J:\Script Jochen\temp\Oktober" md "J:\Script Jochen\temp\Oktober"
if not exist "J:\Script Jochen\temp\November" md "J:\Script Jochen\temp\November"
if not exist "J:\Script Jochen\temp\Dezember" md "J:\Script Jochen\temp\Dezember"
--log file erstellen
dir /b *_* >files.log
--log file auslesen
For /F "delims=. Tokens=1-4*" %%i in (Files.log) do (
--Dateien verschieben
If %%j==01 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Januar"
If %%j==02 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Februar"
If %%j==03 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Maerz"
If %%j==04 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\April"
If %%j==05 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Mai"
If %%j==06 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Juni"
If %%j==07 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Juli"
If %%j==08 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\August"
If %%j==09 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Septemper"
If %%j==10 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Oktober"
If %%j==11 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\November"
If %%j==12 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\Dezember"
)
--log file löschen
del files.log
Kurz gesagt: es schaut welchen Dateinamen die Dateien in dem Ordner ( hier Temp auf meinem USB-Stick ( deshalb J:\ da ich mich auch daheim verscuhen wolte ))liegen und speichert die Namen als .txt ab.
Danach wird dieser an den Punkten sozusagen aufgespalten und die einzelnen Werte werden benutzt.
Hier mein ,,Tagesscript"
Code:
-- Dateien sortieren -th
-- Ordner anlegen fals nicht vorhanden
if not exist "J:\Script Jochen\temp\01Tag" md "J:\Script Jochen\temp\01Tag"
if not exist "J:\Script Jochen\temp\02Tag" md "J:\Script Jochen\temp\02Tag"
if not exist "J:\Script Jochen\temp\03Tag" md "J:\Script Jochen\temp\03Tag"
if not exist "J:\Script Jochen\temp\04Tag" md "J:\Script Jochen\temp\04Tag"
if not exist "J:\Script Jochen\temp\05Tag" md "J:\Script Jochen\temp\05Tag"
if not exist "J:\Script Jochen\temp\06Tag" md "J:\Script Jochen\temp\06Tag"
if not exist "J:\Script Jochen\temp\07Tag" md "J:\Script Jochen\temp\07Tag"
if not exist "J:\Script Jochen\temp\08Tag" md "J:\Script Jochen\temp\08Tag"
if not exist "J:\Script Jochen\temp\09Tag" md "J:\Script Jochen\temp\09Tag"
if not exist "J:\Script Jochen\temp\10Tag" md "J:\Script Jochen\temp\10Tag"
if not exist "J:\Script Jochen\temp\11Tag" md "J:\Script Jochen\temp\11Tag"
if not exist "J:\Script Jochen\temp\12Tag" md "J:\Script Jochen\temp\12Tag"
if not exist "J:\Script Jochen\temp\13Tag" md "J:\Script Jochen\temp\13Tag"
if not exist "J:\Script Jochen\temp\14Tag" md "J:\Script Jochen\temp\14Tag"
if not exist "J:\Script Jochen\temp\15Tag" md "J:\Script Jochen\temp\15Tag"
if not exist "J:\Script Jochen\temp\16Tag" md "J:\Script Jochen\temp\16Tag"
if not exist "J:\Script Jochen\temp\17Tag" md "J:\Script Jochen\temp\17Tag"
if not exist "J:\Script Jochen\temp\18Tag" md "J:\Script Jochen\temp\18Tag"
if not exist "J:\Script Jochen\temp\19Tag" md "J:\Script Jochen\temp\19Tag"
if not exist "J:\Script Jochen\temp\20Tag" md "J:\Script Jochen\temp\20Tag"
if not exist "J:\Script Jochen\temp\21Tag" md "J:\Script Jochen\temp\21Tag"
if not exist "J:\Script Jochen\temp\22Tag" md "J:\Script Jochen\temp\22Tag"
if not exist "J:\Script Jochen\temp\23Tag" md "J:\Script Jochen\temp\23Tag"
if not exist "J:\Script Jochen\temp\24Tag" md "J:\Script Jochen\temp\24Tag"
if not exist "J:\Script Jochen\temp\25Tag" md "J:\Script Jochen\temp\25Tag"
if not exist "J:\Script Jochen\temp\26Tag" md "J:\Script Jochen\temp\26Tag"
if not exist "J:\Script Jochen\temp\27Tag" md "J:\Script Jochen\temp\27Tag"
if not exist "J:\Script Jochen\temp\28Tag" md "J:\Script Jochen\temp\28Tag"
if not exist "J:\Script Jochen\temp\29Tag" md "J:\Script Jochen\temp\29Tag"
if not exist "J:\Script Jochen\temp\30Tag" md "J:\Script Jochen\temp\30Tag"
if not exist "J:\Script Jochen\temp\31Tag" md "J:\Script Jochen\temp\31Tag"
--log file erstellen
dir /b *_* >files.log
--log file auslesen
--Dateien verschieben
For /F "delims=. Tokens=1-4*" %%i in (Files.log) do (
If %%i==01 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\01Tag"
If %%i==02 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\02Tag"
If %%i==03 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\03Tag"
If %%i==04 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\04Tag"
If %%i==05 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\05Tag"
If %%i==06 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\06Tag"
If %%i==07 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\07Tag"
If %%i==08 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\08Tag"
If %%i==09 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\09Tag"
If %%i==10 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\10Tag"
If %%i==11 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\11Tag"
If %%i==12 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\12Tag"
If %%i==13 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\13Tag"
If %%i==14 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\14Tag"
If %%i==15 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\15Tag"
If %%i==16 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\16Tag"
If %%i==17 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\17Tag"
If %%i==18 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\18Tag"
If %%i==19 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\19Tag"
If %%i==20 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\20Tag"
If %%i==21 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\21Tag"
If %%i==22 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\22Tag"
If %%i==23 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\23Tag"
If %%i==24 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\24Tag"
If %%i==25 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\25Tag"
If %%i==26 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\26Tag"
If %%i==27 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\27Tag"
If %%i==28 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\28Tag"
If %%i==29 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\29Tag"
If %%i==30 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\30Tag"
If %%i==31 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\31Tag"
)
--log file löschen
del files.log
pause
Wenn ich die änderung hier mache
;; If %%i==test_31 move %%i.%%j.%%k.%%l.%%m "J:\Script Jochen\temp\31Tag";;
funktioniert es. Aber wenn es Dann in die Richtige Projektumgebung kommt müste man wieder alles änder.
Einfach ein ,*, davorsetzn funktioniert auch nicht.
Gibt es andere Platzhalter ?
Hoffe jemand hat ne Idee.
Greetz
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139698
Url: https://administrator.de/contentid/139698
Ausgedruckt am: 05.11.2024 um 09:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo ToAsTyBoY und willkommen im Forum!
Da Du ja mehrere "Delimiter" verwenden kannst, sollte eigentlich für die Verschiebung nach Tagen folgende (ungetestete) Zeile genügen:
Für das Anlegen der "Tages"-Ordner wäre übrigens
etwas eleganter ...
[Edit] Zweite Schleife wegen führender Null der "Tages"-Ordner hinzugefügt [/Edit]
Grüße
bastla
Da Du ja mehrere "Delimiter" verwenden kannst, sollte eigentlich für die Verschiebung nach Tagen folgende (ungetestete) Zeile genügen:
for /f "tokens=1-2* delims=_." %%i in (Files.log) do move %%i_%%j.%%k "J:\Script Jochen\temp\%%jTag"
for /l %%i in (1,1,9) do md "J:\Script Jochen\temp\0%%iTag" 2>nul
for /l %%i in (10,1,31) do md "J:\Script Jochen\temp\%%iTag" 2>nul
[Edit] Zweite Schleife wegen führender Null der "Tages"-Ordner hinzugefügt [/Edit]
Grüße
bastla
Hallo ToAsTyBoY!
Die beiden Schleifen für das Erstellen der "Tages"-Ordner (für die einstelligen Tage von 1 bis 9 muss die führende Null im Ordnernamen zusätzlich angegeben werden) sind jeweils Zählschleifen - kannst Du unter "
Mit dem "
Für das Verschieben selbst brauchst Du den Tag - in "test_31.03.10.13.30.abc" ist das, bei Unterteilung am "_" und jedem "." der Token 2 (daher %%j). Um den gesamten Dateinamen wieder zusammensetzen zu können, benötigst Du natürlich auch "test_" (= %%i). Alles, was nach dem zweiten Token folgt, nämlich "03.10.13.30.abc", muss nicht weiter zerlegt werden (dafür steht der Stern in "
Die ersten beiden Trennzeichen ("_" und der erste Punkt) gehen durch die Zerlegung verloren und müssen daher selbst in den Dateinamen eingefügt werden
Da der Tag nun in %%j steht (und der Ordner dafür vorweg ja schon angelegt wurde), kannst Du den Zielpfad einfach unter Verwendung der Variablen "%%j" zusammenbauen ...
Eine sinnvolle Ergänzung wäre es, die Pfade für Quelle und Ziel vorweg in Variablen zu schreiben - macht den Batch leichter wart- bzw übertragbar; außerdem könntest Du (wenn sie nicht für andere, zB Dokumentations-, Zwecke benötigt wird) die Datei "files.log" einsparen und direkt in der Schleife die Dateinamen ermitteln. Aus diesen Überlegungen ergäbe sich dann etwa:
Grüße
bastla
Die beiden Schleifen für das Erstellen der "Tages"-Ordner (für die einstelligen Tage von 1 bis 9 muss die führende Null im Ordnernamen zusätzlich angegeben werden) sind jeweils Zählschleifen - kannst Du unter "
for /?
" nachlesen - wobei eben in %%i die Werte von 1 bis 9 bzw 10 bis 31 zur Verfügung gestellt werden.Mit dem "
2>nul
" werden Fehlermeldungen unterdrückt - damit spare ich das "if not exist
" ein und vermeide dennoch, dass Meldungen der Art "Ein Unterverzeichnis oder eine Datei mit dem Namen "J:\Script Jochen\temp\01Tag" existiert bereits." angezeigt werden.Für das Verschieben selbst brauchst Du den Tag - in "test_31.03.10.13.30.abc" ist das, bei Unterteilung am "_" und jedem "." der Token 2 (daher %%j). Um den gesamten Dateinamen wieder zusammensetzen zu können, benötigst Du natürlich auch "test_" (= %%i). Alles, was nach dem zweiten Token folgt, nämlich "03.10.13.30.abc", muss nicht weiter zerlegt werden (dafür steht der Stern in "
tokens=1-2*
") und bildet damit Token 3 (%%k).Die ersten beiden Trennzeichen ("_" und der erste Punkt) gehen durch die Zerlegung verloren und müssen daher selbst in den Dateinamen eingefügt werden
Da der Tag nun in %%j steht (und der Ordner dafür vorweg ja schon angelegt wurde), kannst Du den Zielpfad einfach unter Verwendung der Variablen "%%j" zusammenbauen ...
Eine sinnvolle Ergänzung wäre es, die Pfade für Quelle und Ziel vorweg in Variablen zu schreiben - macht den Batch leichter wart- bzw übertragbar; außerdem könntest Du (wenn sie nicht für andere, zB Dokumentations-, Zwecke benötigt wird) die Datei "files.log" einsparen und direkt in der Schleife die Dateinamen ermitteln. Aus diesen Überlegungen ergäbe sich dann etwa:
@echo off & setlocla
set "Quelle="J:\Ein bestimmter Ordner beim Kunden"
set "Ziel=J:\Script Jochen\temp"
for /l %%i in (1,1,9) do md "%Ziel%\0%%iTag" 2>nul
for /l %%i in (10,1,31) do md "%Ziel%\%%iTag" 2>nul
pushd "%Quelle%"
for /f "tokens=1-2* delims=_." %%i in ('dir /b *_*') do move %%i_%%j.%%k "%Ziel%\%%jTag"
popd
bastla
Mal kurz eingeschmissen ich bastel ja viel mit Batch, aber so extrem nun auch wieder nicht.
Alles nach und nahc selbst beigebracht oder aus büchern bzw Internetseiten?
Wenn aus büchern oder gewissen INET seiten wo sowas gut beschrieben steht, wäre echt geil wenn ihr die Posten könntet, dann favo ich mir die mal oder werd sie kaufen.
Danke
Alles nach und nahc selbst beigebracht oder aus büchern bzw Internetseiten?
Wenn aus büchern oder gewissen INET seiten wo sowas gut beschrieben steht, wäre echt geil wenn ihr die Posten könntet, dann favo ich mir die mal oder werd sie kaufen.
Danke
@ColdZero
Buchtipps von mir leider Fehlanzeige, und was Webseiten anlangt - eine der beiden, die ich empfehlen würde (die, wo's viel von einem gewissen Biber zu lernen gibt), hast Du ja schon gefunden, und als zweiten Hinweis könnte ich noch Rob van der Woude's Scripting Pages anbieten - ansonsten vor allem: "learning by doing" ...
Grüße
bastla
ich bastel ja viel mit Batch, aber so extrem nun auch wieder nicht.
Wie, Du ortest hier "Batch-Extremisten"? Buchtipps von mir leider Fehlanzeige, und was Webseiten anlangt - eine der beiden, die ich empfehlen würde (die, wo's viel von einem gewissen Biber zu lernen gibt), hast Du ja schon gefunden, und als zweiten Hinweis könnte ich noch Rob van der Woude's Scripting Pages anbieten - ansonsten vor allem: "learning by doing" ...
Grüße
bastla
Danke, direkt mal gesavet die Rob seite.
Der Biber ist bei mir glaube ich bisher nie in erscheinung getreten, aber gut zu wissen das der was zum lernen hat, du hast ja auch ne menge ahnung.
Komme mittlerweile eh bei allen problemen die sich net durch eine Suchmaschine lösen lassen hier her was IT angeht ^^ Hier findet man(n) immer jemanden.
Gruß Zero
Der Biber ist bei mir glaube ich bisher nie in erscheinung getreten, aber gut zu wissen das der was zum lernen hat, du hast ja auch ne menge ahnung.
Komme mittlerweile eh bei allen problemen die sich net durch eine Suchmaschine lösen lassen hier her was IT angeht ^^ Hier findet man(n) immer jemanden.
Gruß Zero