Batch Veränderliche Zeitspanne als Parameter mitgeben.

Nail

Lt. Junior Grade
Registriert
Apr. 2008
Beiträge
365
hi zusammen,

ich arbeite hier gerade an der Automatisierung eines Programms. Dort gibt es eine Anwendung die einige Parameter benötigt.

Das muss dann etwa so aus sehen:

anwendung.exe -f -a D:\pfad1 -te D:\pfad2 -es D:\pfad3 -c D:\pfad4 D:\pfad5 09-01-2010 09-30-2010 D:\pfad6

Die Pfade bleiben immer gleich. Aber die Datumsparameter ändern sich logischerweise immer. Das Problem bei der Geschichte ist, dass man hier nicht das heutige Datum angeben muss, sondern immer die Zeitspanne des letzten Monats. D.h. wenn ich das Programm heute ausführe, dann müssten die Parameter 09-01-2010 und 09-30-2010 mitgegeben werden. Wenn ich das Programm aber im November ausführe, dann müssten die Parameter 10-01-2010 und 10-31-2010 mitgegeben werden.

Das Problem könnte prinzipiell über Variablen und einer Benutzerabfrage im Batch gelöst werden, aber die entsprechende Batch Datei sollte weitgehend automatisch, also ohne Benutzerinteraktion, ausgeführt werden. Ich hab mich mal durchgegoogelt und mir einige Tutorials durchgelesen, aber eine Lösung habe ich bisher nicht gefunden. Auch aufgrund des komischen Formats. Das Programm bietet mir aber leider keine Alternativen.

Ich hoffe ihr könnt mir weiterhelfen.

Gruß
Tobi
 
Code:
dd=01
set mm=%date:~3,2%
set yyyy=%date:~6,4%

Damit könntest du zumindest schonmal den Monatsersten bestimmen. Den Monatsletzten würde ich jetzt mit dem Holzhammer machen. Einfach eine IF Abfrage auf "mm" und dann zurückgeben ob der Monat 28, 30 oder 31 Tage hat.
 
quick&dirty:
Code:
set date=%date%

set month=%date:~3,2%
set year=%date:~6,4%
echo %month%
echo %year%
set /a x=%month%-1
echo %x%

IF %x% LEQ 0 set /a x=1;

echo %x%-01-%year%
echo %x%-30-%year%

pause

Müsste so funktionieren, bis auf die Anzahl der Tage des Monats. Das kannst du eventuell über zusätzliche Bedingungen lösen. Oder du machst das Ganze in VBscript, da gibts Datumsfunktionen.

Edit:
Um auch bei Monaten, deren Wert kleiner 10 ist, eine führende "0" zu erhalten kannst du das noch ergänzen:
Code:
IF %x% LEQ 9 set x=0%x%
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben