VBS-Script reagiert bei Start über Task anders als sonst
Hallo zusammen,
ich habe hier eine Batch-Datei die ein Programm mit verschiedenen Parametern aufrufen muss:
Ein Parameter ist dabei der letzte Tag des Vormonats.
Da Batch mit Datum rechnen das so wohl nicht kann, habe ich hier ein vbs-Schnipsel eingebaut:
Nun ist es so, dass das ganze wenn ich die Batch als Benutzer ausführe auch gut funktioniert, aber sobald ich die Batch als Task anlege, kommt als letzter Tag des Vormonats "In" raus.
Nachdem ich mal alles was die vbs übergibt in eine Variable eingelesen habe, ergibt sich das Wort "Input"
Kann mir jemand sagen warum die Batch/vbs als Task etwas anderes zurückgibt wie wenn ich es als User starte?
Übrigens - der Task wird mit dem selben User und höchsten Privilegien etc. gestartet.
Danke & Gruß
Larz
ich habe hier eine Batch-Datei die ein Programm mit verschiedenen Parametern aufrufen muss:
cd programmpfad
set date=%date%
set month=%date:~3,2%
set year=%date:~8,2%
set /a x=%month%-1
for /f %%i in ('cscript //nologo GetUltimoSnippet.vbs') do set "Letzter=%%i"
echo %letzter%
set ultimo=%letzter:~0,2%
echo %ultimo%
if %x% LEQ 0 set /a x=1;
if %x% LEQ 9 set x=0%x%
programmaufruf.exe Parameter1 Para2 d:\Zielpfad\Exp_EFW_20%year%%x%%ultimo%.txt g1 01.%x%.%year% %ultimo%.%x%.%year% ''
Ein Parameter ist dabei der letzte Tag des Vormonats.
Da Batch mit Datum rechnen das so wohl nicht kann, habe ich hier ein vbs-Schnipsel eingebaut:
' VBS-Schnipsel zur Ermittlung des Monatsletzten
IF WScript.arguments.count = 1 Then
dDate=WScript.arguments.item(0)
else
dDate=Date
End if
WScript.echo dateAdd ("d", -1, dateAdd("m", 1, "01." & Month(dDate) -1 & "." &year(ddate)))
Nun ist es so, dass das ganze wenn ich die Batch als Benutzer ausführe auch gut funktioniert, aber sobald ich die Batch als Task anlege, kommt als letzter Tag des Vormonats "In" raus.
Nachdem ich mal alles was die vbs übergibt in eine Variable eingelesen habe, ergibt sich das Wort "Input"
Kann mir jemand sagen warum die Batch/vbs als Task etwas anderes zurückgibt wie wenn ich es als User starte?
Übrigens - der Task wird mit dem selben User und höchsten Privilegien etc. gestartet.
Danke & Gruß
Larz
Please also mark the comments that contributed to the solution of the article
Content-Key: 265347
Url: https://administrator.de/contentid/265347
Printed on: April 23, 2024 at 18:04 o'clock
4 Comments
Latest comment
Hallo Larz,
das "Input" gehört wahrscheinlich zu einem "Input Error", das erscheint wenn die VBS Datei nicht gefunden wird. Gib doch mal den gesamten Pfad zum VBScript an.
Grüße
rubberman
EDIT
das "Input" gehört wahrscheinlich zu einem "Input Error", das erscheint wenn die VBS Datei nicht gefunden wird. Gib doch mal den gesamten Pfad zum VBScript an.
Da Batch mit Datum rechnen das so wohl nicht kann
Kann schon. Ich poste gleich noch einen Schnipsel hinterher ...Grüße
rubberman
EDIT
@echo off &setlocal
for /f "tokens=1-3 delims=." %%i in ("%date:* =%") do (
set /a "day=100%%i %% 100, month=100%%j %% 100, year=%%k, ultimoMonth=month-1, ultimoYear=year"
)
if "%ultimoMonth%"=="0" set /a "ultimoMonth=12, ultimoYear-=1"
set /a "ultimoDay=30+!(((ultimoMonth&9)+6) %% 7)+!(ultimoMonth^2)*(!(ultimoYear %% 4)-!(ultimoYear %% 100)+!(ultimoYear %% 400)-2)"
echo %ultimoDay% %ultimoMonth% %ultimoYear%
pause
Hallo Larz,
nachdem ich mir deine Frage noch mal angesehen habe, geht es dir darum den ersten und letzten des Vormonats zu ermitteln, mit Tag und Monat zweistellig. Auch das wäre mit einer simplen Anpassung umzusetzen.
Grüße
rubberman
nachdem ich mir deine Frage noch mal angesehen habe, geht es dir darum den ersten und letzten des Vormonats zu ermitteln, mit Tag und Monat zweistellig. Auch das wäre mit einer simplen Anpassung umzusetzen.
@echo off &setlocal
for /f "tokens=1-3 delims=." %%i in ("%date:* =%") do (
set /a "day=100%%i %% 100, month=100%%j %% 100, year=%%k, ultimoMonth=month-1, ultimoYear=year"
)
if "%ultimoMonth%"=="0" set /a "ultimoMonth=12, ultimoYear-=1"
set /a "ultimoDay=130+!(((ultimoMonth&9)+6) %% 7)+!(ultimoMonth^2)*(!(ultimoYear %% 4)-!(ultimoYear %% 100)+!(ultimoYear %% 400)-2), ultimoMonth+=100"
set "ultimoDay=%ultimoDay:~-2%" &set "ultimoMonth=%ultimoMonth:~-2%"
echo Vormonat: 01.%ultimoMonth%.%ultimoYear% - %ultimoDay%.%ultimoMonth%.%ultimoYear%
pause
rubberman