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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 265347
Url: https://administrator.de/contentid/265347
Ausgedruckt am: 22.11.2024 um 02:11 Uhr
4 Kommentare
Neuester Kommentar
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