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

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

Printed on: April 24, 2024 at 23:04 o'clock

Member: Logan000
Logan000 Oct 16, 2008 at 12:33:07 (UTC)
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.
Member: Biber
Biber Oct 16, 2008 at 12:47:37 (UTC)
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
Member: OliverBecht
OliverBecht Oct 16, 2008 at 13:24:59 (UTC)
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
Member: Logan000
Logan000 Oct 16, 2008 at 13:48:28 (UTC)
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.
Member: OliverBecht
OliverBecht Oct 16, 2008 at 14:13:11 (UTC)
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 ?
Member: Logan000
Logan000 Oct 17, 2008 at 13:22:29 (UTC)
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.
Member: OliverBecht
OliverBecht Oct 17, 2008 at 13:58:28 (UTC)
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 ?
Member: Logan000
Logan000 Oct 17, 2008 at 14:09:31 (UTC)
Goto Top
Moin

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

Gruß L.
Member: dieseyer
dieseyer Oct 19, 2008 at 06:24:50 (UTC)
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.
Member: OliverBecht
OliverBecht Oct 20, 2008 at 06:33:14 (UTC)
Goto Top
Tausend Dank, es hat jetzt geklappt.
Member: Logan000
Logan000 Oct 20, 2008 at 06:56:16 (UTC)
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.