barashnukor
Goto Top

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

Content-ID: 111966

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

Ausgedruckt am: 14.11.2024 um 01:11 Uhr

godlie
godlie 20.03.2009 um 14:31:11 Uhr
Goto Top
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:
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 face-smile

das was oben steht einfach als *.bat abspeichern und ausprobieren.

grüße
barashnukor
barashnukor 20.03.2009 um 14:41:44 Uhr
Goto Top
Hallo! Also die For schleife hab ich jetzt hinbekommen. Danke!

Mein Problem was ich jetzt habe ist, dass ich den Namen den ich jetzt ja durch die FOR schleife ausgelesen habe, in einen Windows-Pfad einbauen muss. Und das krieg ich irgendwie nicht hin.

ist der windowspfad dann? C:\blabla\%i kann das funktionieren?
godlie
godlie 20.03.2009 um 14:44:10 Uhr
Goto Top
fast du mussst C:\bla\%%i nehmen.
barashnukor
barashnukor 23.03.2009 um 09:11:32 Uhr
Goto Top
Hallo! Danke nochmal. das hat Prinzipiell super funktioniert, hab nur ein Problem -.-

Ich rufe damit einen Konverter auf. Nach dem ersten durchlauf schließt er mir die cmd"shell" und dadurch wird die 2te zeile nicht ausgeführt. kann ich das irgendwie umgehen, indem ich sage, nach dem ende der konvertierung, öffne ne neue cmd, und mach dort die nächste zeile?
barashnukor
barashnukor 23.03.2009 um 09:54:24 Uhr
Goto Top
hat sich erledigt, hab den fehler gefunden. danke trotzdem!

LG