oliverbecht
Goto Top

Habe ein Problem mit der CMD Variale date

Hallo ich habe ein Skript das soweit gut laüft jedoch gibt der Befehl in Robocopy nicht das Datum für den Ordner raus sondern nur einen Ordner mit %date%.
Hier der teil vom Skript:

'robocopy aufrufen
robo = "robocopy /move ""R:\Mein Buero Backup"" ""R:\Mein Buero Backup\%date%"""
wshshell.run robo,0,true

Vielleich kann mir jemand helfen !
Vielen Dank

Content-ID: 99471

Url: https://administrator.de/forum/habe-ein-problem-mit-der-cmd-variale-date-99471.html

Ausgedruckt am: 05.02.2025 um 12:02 Uhr

Logan000
Logan000 16.10.2008 um 14:33:07 Uhr
Goto Top
Moin Moin

Ich glaub Du hast es mit den " einfach zu gut gemeint.
Probiers mal so:
...
robo = "robocopy /move ""R:\Mein Buero Backup"" ""R:\Mein Buero Backup\""%date%"   
...

Gruß L.
Biber
Biber 16.10.2008 um 14:47:37 Uhr
Goto Top
Moin OliverBecht,

Du kannst in VB-whatever keine Shell-Umgebungsvariablen direkt (also als %var%) ansprechen,
sondern mussu über die vorgesehenen Schnittstellen-Methoden holen.
Set oShell = CreateObject( "WScript.Shell" )  
envdate=oShell.ExpandEnvironmentStrings("%date%")  
....
WScript.Echo 'datum %date%' & " " & envdate  

Wobei Du natürlich über Now oder date genau das gleiche in der Hand hast.... nur schneller halt.

Grüße
Biber
OliverBecht
OliverBecht 16.10.2008 um 15:24:59 Uhr
Goto Top
Vielleicht bin ich der DAU jedenfalls wenn ich den Quelltext in mein Skript einbaue dann kommt nur eine leere Msg Box mit einem OK Button
Ich setzte jetzt mal das ganze Skript.
Vielen Dank ......

Option Explicit
Dim fs, net, objectDomain, wshshell, objectUser, oShell, envdate
Dim delage
Dim robo
Dim aufrufen

'Zugriff auf Objecte
Set fs = CreateObject("Scripting.FileSystemObject")
Set net = CreateObject("WScript.Network")
Set wshshell = CreateObject("Wscript.Shell")

Set oShell = CreateObject( "WScript.Shell" )
envdate=oShell.ExpandEnvironmentStrings("%date%")
WScript.Echo 'datum %date%' & " " & envdate

'Laufwerk prüfen
set fs = CreateObject("Scripting.FileSystemObject")
if fs.driveexists("R:") then
WshShell.Popup "Die Datensicherung beginnt jetzt.",2, "Datensicherung", vbOKOnly + vbInformation
else
WshShell.Popup "Datensicherung abgebrochen.",, "Datensicherung", vbOKOnly + vbInformation
WScript.Quit
end if

'Datensicherung
wshshell.run """C:\Programme\Buhl\Mein Büro 2009\mfBCK.exe"" A ""R:\Mein Buero Backup\"" true true true",0,true

'robocopy aufrufen
robo = "robocopy /move ""R:\Mein Buero Backup"" ""R:\Mein Buero Backup\""%date%"
wshshell.run robo,0,true

'delage32 aufrufen
delage = "delage32 ""R:\Mein Buero Backup\*.*"" 1 /recurse /rd /subonly"
wshshell.run delage,0,true

'Info senden
WshShell.Popup "Die Datensicherung ist jetzt beendet.",2, "Datensicherung", vbOKOnly + vbInformation
Logan000
Logan000 16.10.2008 um 15:48:28 Uhr
Goto Top
Moin

Zitat von @OliverBecht:
Vielleicht bin ich der DAU ...
Nein bist du nicht.
oShell.ExpandEnvironmentStrings("%date%")  
funktioniert nicht (mit %USERNAME% hingegen schon.

Also entweder probierst Du es So
...
'robocopy aufrufen	  
robo = "robocopy /move ""R:\Mein Buero Backup"" ""R:\Mein Buero Backup\"""  & Date()  
wshshell.run robo,0,true
...
oder so
...
'robocopy aufrufen	  
robo = "robocopy /move ""R:\Mein Buero Backup"" ""R:\Mein Buero Backup\"""    
wshshell.run robo%date%,0,true
...

Gruß L.
OliverBecht
OliverBecht 16.10.2008 um 16:13:11 Uhr
Goto Top
Variante 1 geht zwar, es wird jedoch kein Ordner erstellt.
Variante 2 geht gar nicht da kommt eine Fehlermeldung das irgend was nicht stimmt
Muss ich was mit dem Quelltext oShell.ExpandEnvironmentStrings("%date%") machen ?
Logan000
Logan000 17.10.2008 um 15:22:29 Uhr
Goto Top
Moin Moin

Variante 2 geht gar nicht da kommt eine Fehlermeldung das irgend was nicht stimmt
Da nimmst Du wohl besser Variante 1
Muss ich was mit dem Quelltext oShell.ExpandEnvironmentStrings("%date%") machen ?
Löschen.

Variante 1 geht zwar, es wird jedoch kein Ordner erstellt.
Robocopy erwartet wohl das das Zielverz. bereits existiert.
Das must Du wohl anlegen. Etweder nit dem Batchbefehl MD oder via FileSystemObject und createfolder.

Gruß L.
OliverBecht
OliverBecht 17.10.2008 um 15:58:28 Uhr
Goto Top
Der Befehl /md in Robocpy geht auch nicht, es kommt weiterhin nur eine Datei ohne Ordner mit Datum
Weis jetzt auch nicht mehr weiter ?
Logan000
Logan000 17.10.2008 um 16:09:31 Uhr
Goto Top
Moin

MD oder auch Mkdir ist auch kein Parameter von Robokopy sonder ein "eigener Befehl"
Siehe: Windows Hilfe.

Gruß L.
dieseyer
dieseyer 19.10.2008 um 08:24:50 Uhr
Goto Top
Auf diese Weise ist die 'Umgebungsvariable' %date% nicht erreichbar, weil als 'Befehslinterpreter' nicht die normale Eingabeaufforderung (DOS-Box) verwendet wird, sondern "Wscript.Shell".

'Eigentlich' sollte man das einzufügende Datum im Skript ermitteln, ähnlich wie in http://dieseyer.de/scr-html/datensicherung.html (die Prozedur "Function Datumverzeichnis ( ZielVerz )" )

Oder (man startet nicht robocopy, sondern) man lässt robocopy in der Eingabeaufforderung laufen:
"%comspec% /c robocopy /move ""R:\Mein Buero Backup"" ""R:\Mein Buero Backup\%date%"""  

Mit "%comspec% /k" bleibt die Eingabeaufforderung offen und man sieht, was passiert ist - man muss sie von Hand schließen; mit "%comspec% /c" verschwindet sie von alleine.
OliverBecht
OliverBecht 20.10.2008 um 08:33:14 Uhr
Goto Top
Tausend Dank, es hat jetzt geklappt.
Logan000
Logan000 20.10.2008 um 08:56:16 Uhr
Goto Top
Moin Moin
Zitat von @OliverBecht:
Tausend Dank, es hat jetzt geklappt.

Das Freut mich.
Es wäre dennoch nett wenn Du die genaue Lösung posten würdest (für alle anderen mit ähnlichen Problemem).
Un sei doch so gut und setze den beitrag auf erledigt.

Danke & Gruß L.