Windows Batch-script
Hallo!
Vorab, ich habe mit DOS wirklich noch gar nie was zu tun gehabt, und ausser cls und "dir" kenn ich wirklich sogut wie keine Befehle. Ich komme eher aus der Unixwelt, und hab jetzt eine super tolle anforderung bekommen, wo ich mich nicht wirklich hinaussehe.
Gehen tuts darum: Ich habe einen Win-Ordner, der automatisch täglich befüllt wird aus einem Unixbereich heraus(das war kein problem zu machen).
Und jetzt fängts an: Die Daten die dort ankommen sollen jetzt einem Programm (Konverter übergeben werden). Den Aufruf für den konverter hab ich schon herausgefunden und getestet (mit absoluten Werten). Funktioniert auch ganz gut, er legt die konvertierten Daten auch super in den Ordner den ich vorgesehen habe ab.
Aufruf sieht ungefähr so aus:
Win_Pfad/programm.bat –batch
Win_Pfad/zu_verwendendes_script Win_Pfad_input/die_zu_übergebene_datei.endung Win_Pfad_output/die_zu_übergebene_datei.neue_endung
Win_Pfad_output/die_zu_übergebene_datei.neue_endung.log
Jetzt müsste ich das halt irgendwie dynamischer machen, und hier würdet ihr ins spiel kommen, da ja auch mehrere Dateien in dem Ordner drinnen sein können. Das ganze soll einmal täglich laufen, aber das kann ich ja mit diesem geplanten Task von Windows machen. Jetzt weiss ich nicht, gibt es sowas wie den AWK unter Windows? Wie kann ich aus dem Dir Befehl nur die dateinamen rausschneiden? Und die For schleife bereitet mir auch irgendwie kopfzerbrechen. Bin schon unter Unix nicht gerade der Scriptgott.. aber das hier überfordert mich schon etwas.
wenn ich das irgendwie herausschneiden kann und dann kA wie man das deklariert (sagen wir mal zu $i) müsste das ja irgendwie so funktionieren, oder?
declare $i = kA wie man das aus dem dir herausschneidet
Win_Pfad/programm.bat –batch Win_Pfad/zu_verwendendes_script Win_Pfad_input/$i.endung
Win_Pfad_output/$i.neue_endung
Win_Pfad_output/$i.neue_endung.log
und dann noch irgendwie eine For schleife drum rum, damit er das halt für jede datei macht, die drinnen liegt, und die Datei die er verwendet hat, soll er löschen.
Ich hoffe ich habe euch nicht zu sehr verwirrt, und ja, mir ist klar, dass ich mich da zum voll Noob gemacht habe, aber wie gesagt, hab damit wirklich noch gar nichts am Hut gehabt, und es wäre super nett wenn mir da wer unter die Arme greifen könnte.
Danke im vorraus!
LG Stefan alias Barashnukor
Vorab, ich habe mit DOS wirklich noch gar nie was zu tun gehabt, und ausser cls und "dir" kenn ich wirklich sogut wie keine Befehle. Ich komme eher aus der Unixwelt, und hab jetzt eine super tolle anforderung bekommen, wo ich mich nicht wirklich hinaussehe.
Gehen tuts darum: Ich habe einen Win-Ordner, der automatisch täglich befüllt wird aus einem Unixbereich heraus(das war kein problem zu machen).
Und jetzt fängts an: Die Daten die dort ankommen sollen jetzt einem Programm (Konverter übergeben werden). Den Aufruf für den konverter hab ich schon herausgefunden und getestet (mit absoluten Werten). Funktioniert auch ganz gut, er legt die konvertierten Daten auch super in den Ordner den ich vorgesehen habe ab.
Aufruf sieht ungefähr so aus:
Win_Pfad/programm.bat –batch
Win_Pfad/zu_verwendendes_script Win_Pfad_input/die_zu_übergebene_datei.endung Win_Pfad_output/die_zu_übergebene_datei.neue_endung
Win_Pfad_output/die_zu_übergebene_datei.neue_endung.log
Jetzt müsste ich das halt irgendwie dynamischer machen, und hier würdet ihr ins spiel kommen, da ja auch mehrere Dateien in dem Ordner drinnen sein können. Das ganze soll einmal täglich laufen, aber das kann ich ja mit diesem geplanten Task von Windows machen. Jetzt weiss ich nicht, gibt es sowas wie den AWK unter Windows? Wie kann ich aus dem Dir Befehl nur die dateinamen rausschneiden? Und die For schleife bereitet mir auch irgendwie kopfzerbrechen. Bin schon unter Unix nicht gerade der Scriptgott.. aber das hier überfordert mich schon etwas.
wenn ich das irgendwie herausschneiden kann und dann kA wie man das deklariert (sagen wir mal zu $i) müsste das ja irgendwie so funktionieren, oder?
declare $i = kA wie man das aus dem dir herausschneidet
Win_Pfad/programm.bat –batch Win_Pfad/zu_verwendendes_script Win_Pfad_input/$i.endung
Win_Pfad_output/$i.neue_endung
Win_Pfad_output/$i.neue_endung.log
und dann noch irgendwie eine For schleife drum rum, damit er das halt für jede datei macht, die drinnen liegt, und die Datei die er verwendet hat, soll er löschen.
Ich hoffe ich habe euch nicht zu sehr verwirrt, und ja, mir ist klar, dass ich mich da zum voll Noob gemacht habe, aber wie gesagt, hab damit wirklich noch gar nichts am Hut gehabt, und es wäre super nett wenn mir da wer unter die Arme greifen könnte.
Danke im vorraus!
LG Stefan alias Barashnukor
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 111966
Url: https://administrator.de/contentid/111966
Ausgedruckt am: 14.11.2024 um 01:11 Uhr
5 Kommentare
Neuester Kommentar
Hy also gleich mal vorweg sowie awk gibst nicht direkt aber ich glaube AutoIT kann dir evtl. helfen.
aber das ganze geht auch per batch recht gut:
das hier listet dir alle Dateinamen und nur die dateinamne auf.
musst halt statt @echo %%i deine Parts einbauen versteh das ganze was dort machen willst net ganz
das was oben steht einfach als *.bat abspeichern und ausprobieren.
grüße
aber das ganze geht auch per batch recht gut:
for /F "tokens=*" %%i in ('dir /B') do @echo %%i
das hier listet dir alle Dateinamen und nur die dateinamne auf.
musst halt statt @echo %%i deine Parts einbauen versteh das ganze was dort machen willst net ganz
das was oben steht einfach als *.bat abspeichern und ausprobieren.
grüße