goodbytes
Goto Top

Systemvariable mit vbs-Script setzen

Hallo,
ich benötige für eine Batch-Datei immer das exakte Datum des Vortages. Da ich in einer Batch nicht wirklich mit Datumswerten rechnen kann bin ich für diesen Zweck auf eine vbs ausgewichen.
Nach dem Ermitteln des Vortage habe ich das Ergebnis in der Variable "strYest":
strYest = "" & strYear & strMonth & strDay & ".
Nun möchte ich den Inhalt dieser Variable aber in eine Systemvariable übergeben. Aus dieser vbs-Datei heraus rufe ich dann die Batch auf und möchte diese Variable darin nutzen.
Wie kann ich diese Variable setzen?

Torsten

Content-Key: 78090

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

Printed on: April 19, 2024 at 06:04 o'clock

Member: bastla
bastla Jan 14, 2008 at 12:31:39 (UTC)
Goto Top
Hallo TorstenB!

Falls es keinen besonderen Grund dafür gibt, über VBS zu starten, würde ich es umgekehrt machen: Aus der Batchdatei das VBScript über "cscript" aufrufen (und, so kurz wie es ist, auch gleich erstellen - so kann ich sicher sein, dass es da ist) und dann mit dem Ergebnis weiterarbeiten, zB:
@echo off & setlocal
set "gTemp=%Temp%\Gestern.vbs"  
echo g=DateAdd("d",-1,Date):WScript.Echo Right(g,4)^&Mid(g,4,2)^&Left(g,2)>%gTemp%  
for /f %%i in ('cscript //nologo %gTemp%') do set G=%%i  
echo %G%

Grüße
bastla
Member: bastla
bastla Jan 14, 2008 at 12:48:57 (UTC)
Goto Top
... aber, um doch auch die gestellte Frage zu beantworten: Du kannst Dein Datum dem Batch einfach beim Aufruf als Parameter mitgeben, zB
objShell.Run "C:\Scripts\MeinBatch.cmd " & strYest  
In der Batchdatei kannst du dann mit %1 auf den Parameter zugreifen:
@echo off & setlocal
set G=%1
if defined G (echo Gestern: %G%) else echo Kein Datum angegeben!
Den Vorteil der oben beschriebenen Methode sehe ich, wie erwähnt, darin, dass ich nur eine Datei "verwalten" muss.

Grüße
bastla
Member: goodbytes
goodbytes Jan 14, 2008 at 13:34:41 (UTC)
Goto Top
Hallo Basta,
stimmt, dein erster Vorschlag wäre die bessere Lösung.
Ich werd`s nachher mal ausprobieren und geb auf jeden Fall Bescheid.

Vielen Dank erstmal !!! face-smile

Torsten
Member: goodbytes
goodbytes Jan 14, 2008 at 14:27:25 (UTC)
Goto Top
Hallo Bastla,
hab die erste Variante probiert, klappt prima !!! face-smile
Ist je eine clevere Idee eine temporäre vbs-Datei zu erzeugen und die Geschichte darin abzuarbeiten! So benötige ich nur die eine Batch-Datei.

Vielen Dank nochmal !!!

Torsten
Member: stbewo
stbewo Jan 14, 2008 at 14:46:03 (UTC)
Goto Top
Hallo Bastla,

finde ich auch, dass dies eine geschickte Umsetzung der Datumshandhabung ist. Der Vorteil ist, dass man auch über den 1. eines Monats zurück das Datum erhält (z.B 1.1.08 - 5Tage). In einem Batch nicht zu programmieren oder nur mit sehr großem Aufwand.

Gruß
Stefan
Member: bastla
bastla Jan 14, 2008, updated at Oct 18, 2012 at 16:35:18 (UTC)
Goto Top
Ist je eine clevere Idee eine temporäre vbs-Datei zu erzeugen und die Geschichte darin abzuarbeiten!

finde ich auch, dass dies eine geschickte Umsetzung der Datumshandhabung ist
Dem kann ich mich nur anschließen und die Lorbeeren gleich weiterreichen - ist nämlich nicht auf meinem Mist gewachsen, sondern die Idee ist aus einem von Workshop Batch for Runaways Part III Datums- und Zeitvariablen im Batch).

In einem Batch nicht zu programmieren oder nur mit sehr großem Aufwand.
Ich würde sagen: Letzteres - aber wer will das schon ... face-wink

Grüße
bastla
Member: goodbytes
goodbytes Jan 16, 2008 at 12:01:08 (UTC)
Goto Top
Hallo Bastla,
naja, man muss es halt nur finden... face-smile
Der genannte Workshop von Biber ist wirklich lesenswert.
Danke für den Tipp !!!

Torsten