Batch Sortierer und Kopfchaos
Hi, ich bin neu hier ... also hallo an alle!! Ich hab hier schon häufig nützliche Beiträge gefunden und ich geh mal stark davon aus, dass es dieses Mal auch was wird ... ;)
Ich versuch mich grad mit meiner ersten Batch .. aber ich komm leider mit dem Syntax irgendwie nicht klar bzw. versteh ich den nur zur Hälfte - hab schon versucht hier dieverse Codezeilen zusammenzufriemeln - das wird allerdings langsam zum Drama
Das Script soll folgendes unabhängig vom absoluten Pfad machen:
- lese dateinamen (zb: 20091010-steuererklärung.txt)
- trenne die ersten neun zeichen ab (20091010-)
- trenne die letzten vier zeichen ab (.txt) - (falls nötig - Dateiendungen sollen ignoriert werden)
- checke, ob es bereits einen ordner mit dem restlichen Dateinamen gibt
ja - kopiere datei in den ordner
nein - erstelle ordner mit dem namen
- kopiere datei in den ordner
- gehe zur nächsten datei
mache das bis alle Dateien im Ordner abgearbeitet sind.
also ich denke, dass das nur ein paar Zeilen Code sind - ich bin auch schon bei @echo off - kleiner Scherz. Wie gesagt sitz ich hier schon ne Weile und versuch aus diversen Codes was zusammenzubauen - aber dann steht da immer so Zeug wie %%~dpni wo ich nicht weiss, wo das herkommt oder was das machen soll???
Ich würde mich rießig über ein funktionierendes Grundgerüst freuen ...
ich probier schon mal weiter ...
DANKE!!
Ich versuch mich grad mit meiner ersten Batch .. aber ich komm leider mit dem Syntax irgendwie nicht klar bzw. versteh ich den nur zur Hälfte - hab schon versucht hier dieverse Codezeilen zusammenzufriemeln - das wird allerdings langsam zum Drama
Das Script soll folgendes unabhängig vom absoluten Pfad machen:
- lese dateinamen (zb: 20091010-steuererklärung.txt)
- trenne die ersten neun zeichen ab (20091010-)
- trenne die letzten vier zeichen ab (.txt) - (falls nötig - Dateiendungen sollen ignoriert werden)
- checke, ob es bereits einen ordner mit dem restlichen Dateinamen gibt
ja - kopiere datei in den ordner
nein - erstelle ordner mit dem namen
- kopiere datei in den ordner
- gehe zur nächsten datei
mache das bis alle Dateien im Ordner abgearbeitet sind.
also ich denke, dass das nur ein paar Zeilen Code sind - ich bin auch schon bei @echo off - kleiner Scherz. Wie gesagt sitz ich hier schon ne Weile und versuch aus diversen Codes was zusammenzubauen - aber dann steht da immer so Zeug wie %%~dpni wo ich nicht weiss, wo das herkommt oder was das machen soll???
Ich würde mich rießig über ein funktionierendes Grundgerüst freuen ...
ich probier schon mal weiter ...
DANKE!!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 131580
Url: https://administrator.de/contentid/131580
Ausgedruckt am: 25.11.2024 um 02:11 Uhr
6 Kommentare
Neuester Kommentar
Moin evotoy,
da ich dir den Spaß am Selber-Herausfinden nicht vorzeitig nehmen will, erstmal nur ein paar hoffentlich zielführende Tipps.
So etwas kann immer der DIR /B-Befehl - probier es am CMD-Prompt.
Wobei dann zu überlegen wäre, ob du "immer" die ersten 9 Zeichen abtrennen kannst (Namenssystematik ist wirklich stringent eingehalten) oder das nur machen willst mit allen Dateien der Wildcard "20*-*.*"
Ich würde mich rießig über ein funktionierendes Grundgerüst freuen ...
Noch rießiger aber, wenn du selbst austüftelst...
Grüße
Biber
da ich dir den Spaß am Selber-Herausfinden nicht vorzeitig nehmen will, erstmal nur ein paar hoffentlich zielführende Tipps.
So etwas kann immer der DIR /B-Befehl - probier es am CMD-Prompt.
- trenne die ersten neun zeichen ab (20091010-)
So etwas kann immer dir FOR /F-Anweisung sehr git - auch mit der Ausgabe des DIR/B-Befehls.Wobei dann zu überlegen wäre, ob du "immer" die ersten 9 Zeichen abtrennen kannst (Namenssystematik ist wirklich stringent eingehalten) oder das nur machen willst mit allen Dateien der Wildcard "20*-*.*"
- trenne die letzten vier zeichen ab (.txt) - (falls nötig - Dateiendungen sollen ignoriert werden)
...oder vielleicht lieber die Extension %~xi einer Datei %i? Bzw nur den Namen %~ni statt Name+eXtension %~nxi.- checke, ob es bereits einen ordner mit dem restlichen Dateinamen gibt
... evtl mit IF EXIST... ?- aber dann steht da immer so Zeug wie %%~dpni wo ich
nicht weiss, wo das herkommt oder was das machen soll???
Das steht z.B bei SET /? und FOR /? beschrieben..nicht weiss, wo das herkommt oder was das machen soll???
Ich würde mich rießig über ein funktionierendes Grundgerüst freuen ...
ich probier schon mal weiter ...
Und wenn es klemmt, sind wir da..Grüße
Biber
Also so hät ichs auch gemacht.. naaj so ähnlich.
Hier mal deine Variante mit ein paar änderungen die ich gemacht hätte. das erklärt dann auch deine Frage:
Den Umweg über die Dateien.txt kannst du dir sparen und dem Befehl direkt in die For schreiben (siehe Zeile 2)
Die if exist beim md kannst du weglassen wenn du weißt das md auf ein bereits existierendes Verzeichnis immer auch funktioniert. Eine entstehende fehlermeldung wird dann mit 2>NUL nicht mehr angezeigt. Das es deshalb auch funktioniert wenn nichts in der Variabeln steht liegt daran das du in dem fall ein bereits existierendes Verzeichnis anlegen willst.
Hier mal deine Variante mit ein paar änderungen die ich gemacht hätte. das erklärt dann auch deine Frage:
@echo off
for /F "tokens=2 delims=-" %%i in ('dir/b') do (
md "%%~ni" 2>NUL
move "*%%~ni.*" "%%~ni\"
echo zu erstellen: %%~dpni
echo Name = %%~ni
)
Den Umweg über die Dateien.txt kannst du dir sparen und dem Befehl direkt in die For schreiben (siehe Zeile 2)
Die if exist beim md kannst du weglassen wenn du weißt das md auf ein bereits existierendes Verzeichnis immer auch funktioniert. Eine entstehende fehlermeldung wird dann mit 2>NUL nicht mehr angezeigt. Das es deshalb auch funktioniert wenn nichts in der Variabeln steht liegt daran das du in dem fall ein bereits existierendes Verzeichnis anlegen willst.