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-Key: 265347

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

Printed on: April 20, 2024 at 02:04 o'clock

Member: rubberman
Solution rubberman Mar 05, 2015, updated at Mar 10, 2015 at 09:34:08 (UTC)
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
Member: Larz
Larz Mar 10, 2015 at 09:34:11 (UTC)
Goto Top
Danke, das hilft und gefällt mir zudem besser, weil ich nur noch eine Datei habe..

Danke Dir

Gruß
Larz
Member: rubberman
rubberman Mar 10, 2015 updated at 11:25:34 (UTC)
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
Member: Larz
Larz Mar 11, 2015 at 20:50:38 (UTC)
Goto Top
Coole Sache.... danke