larz
Goto Top

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:

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" face-confused

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

Content-ID: 265347

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

Ausgedruckt am: 22.11.2024 um 02:11 Uhr

rubberman
Lösung rubberman 05.03.2015, aktualisiert am 10.03.2015 um 10:34:08 Uhr
Goto Top
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.

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
Larz
Larz 10.03.2015 um 10:34:11 Uhr
Goto Top
Danke, das hilft und gefällt mir zudem besser, weil ich nur noch eine Datei habe..

Danke Dir

Gruß
Larz
rubberman
rubberman 10.03.2015 aktualisiert um 12:25:34 Uhr
Goto Top
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.
@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
Grüße
rubberman
Larz
Larz 11.03.2015 um 21:50:38 Uhr
Goto Top
Coole Sache.... danke