fraggle666
Goto Top

Robocopy in VB Script einbinden

Guten Morgen zusammen,

ich hoffe ihr könnt mir helfen...

Ich versuche mittels einem VB Script eine Programm zu starten. Soweit so gut, das klappt alles.
Allerdings muss nun noch in diesem Script ein Robocopy Befehl eingebunden werden, der noch vor dem Start des Programms einen Ordner, falls noch nicht vorhanden, in das User Profil kopiert.

Mit Hilfe von Google, habe ich folgendes zusammengeschrieben:

IF NOT (fs.folderExists("%USERPROFILE%\Application Data\Quest Software")) THEN
Set objShell = CreateObject("Wscript.Shell")
objSource = InputBox("K:\Program Files\Quest Software\Toad for Oracle\USERPROFILE\Application Data\Quest Software")
objDestination = InputBox("%USERPROFILE%\Application Data\Quest Software")
objCommand = "RoboCopy.Exe " & Chr(34) & objSource & Chr(34) & " " & Chr(34) & objDestination & Chr(34) & " /MIR"
objShell.Run(objCommand)
END if

(Das ist nur der Teil mit Robocopy, der Rest funktioniert alles)


Wenn ich das Script ausführe, kommt folgende Meldung:

c2f33d328d7e59ddf12e50b92e62d13d-unbenannt


Nach einbinden der Zeile von Tacker kommt folgende Meldung:
b6d3f1f9645914ff7dc173b7c4c00f99-fenster

Habt ihr eine Idee?

Content-ID: 85720

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

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

tacker
tacker 17.04.2008 um 09:50:59 Uhr
Goto Top
Salü

evtl ma folgende Zeile voranhängen..

set fs = createobject("scripting.filesystemobject")  

Gruss tacker
fraggle666
fraggle666 17.04.2008 um 09:52:04 Uhr
Goto Top
Hab das ganze wohl zu kompliziert gemacht.
Anscheinend soll es auch so funktionieren:

IF NOT (fs.folderExists("%USERPROFILE%\Application Data\Quest Software")) THEN
ROBO ="K:\Program Files\batch\robocopy.exe"
erg = WshShell.Exec("ROBO "K:\Program Files\Quest Software\Toad for Oracle\USERPROFILE\Application Data\Quest Software" "%USERPROFILE%\Application Data\Quest Software" /MIR")
END if

Aber da bekomme ich nun den Fehler, das ein ")" expecxted wird face-sad

Führe ich nur diesen Befehl aus, startet er das Robocopy, allerdings ohne meine Robocopy Befehle auszuführen...
erg = WshShell.Exec(ROBO)

Zu Hülf!
fraggle666
fraggle666 17.04.2008 um 09:59:23 Uhr
Goto Top
Hm,

hab die Zeile von dir nun angehängt und bekomme zwei Fenster wenn ich das Script ausführe.
(Bild habe ich ganz oben wieder eingefügt)

Wenn ich die Fenster mit ok bestätige, startet er mein Programm, allerdings ohne vorher Robocopy auszuführen face-sad

Ich muss noch dazu sagen, dass ich mich absolut überhaupt nicht mit VB auskenne. Ich bin froh wenn ich eine funktionierende Batch hinbekomme face-smile
bastla
bastla 17.04.2008 um 10:01:12 Uhr
Goto Top
Hallo fraggle666!

Ungetestet etwa so:
IF NOT (fs.folderExists("%USERPROFILE%\Application Data\Quest Software")) THEN  
	ROBO ="K:\Program Files\batch\robocopy.exe"  
	erg = WshShell.Exec("ROBO ""K:\Program Files\Quest Software\Toad for Oracle\USERPROFILE\Application Data\Quest Software"" ""%USERPROFILE%\Application Data\Quest Software"" /MIR")  
END if

Grüße
bastla

P.S.: Tust Du uns allen bitte den Gefallen, Scripts beim Posten unter -Tags zu stellen?
tacker
tacker 17.04.2008 um 10:02:08 Uhr
Goto Top
nochma von vorn

set fs = createobject("scripting.filesystemobject")  
set WshShell = createobject("wscript.shell")  
IF NOT (fs.folderExists("%USERPROFILE%\Application Data\Quest Software")) THEN  
ROBO ="K:\Program Files\batch\robocopy.exe "  
source = "K:\Program Files\Quest Software\Toad for Oracle\USERPROFILE\Application Data\Quest Software "  
target = "%USERPROFILE%\Application Data\Quest Software "  
parameter = "/MIR"  
erg = WshShell.Run(ROBO & source &  target & parameter) 
END if
fraggle666
fraggle666 17.04.2008 um 10:29:56 Uhr
Goto Top
Also beide Scripte bringen nun keine Fehlermeldung mehr,

allerdings ignorieren auch beide das Robocopy. Es startet kein Kopiervorgang face-sad

Ich habe nochmal alle Pfade geprüft:

Das Robocopy liegt unter K:\Program Files\batch\robocopy.exe

Das Verzeichnis "Quest Software" das ich kopieren bzw. spiegeln möchte, liegt unter "K:\Program Files\Quest Software\Toad for Oracle\USERPROFILE\Application Data\Quest Software"

Das Zielverzeichnis "%USERPROFILE%\Application Data\" existiert.
bastla
bastla 17.04.2008 um 10:59:24 Uhr
Goto Top
@fraggle666

Sorry, hatte zu kurz drübergeschaut - da ja im Pfad zu "Robocopy" ebenfalls Leerzeichen enthalten sind, müsste das eher so aussehen:
ROBO = """K:\Program Files\batch\robocopy.exe"" "  
erg = WshShell.Exec(ROBO & """K:\Program Files\Quest Software\Toad for Oracle\USERPROFILE\Application Data\Quest Software"" ""%USERPROFILE%\Application Data\Quest Software"" /MIR")  
Ein Detail am Rande (und nicht verantwortlich für das "Robocopy"-Startproblem):
Das Zielverzeichnis "%USERPROFILE%\Application Data\" existiert.
... sollte aber besser so angesprochen werden:
IF NOT (fs.folderExists(WshShell.ExpandEnvironmentStrings("%APPDATA%\Quest Software"))) THEN  
In der per "Exec" geöffneten Shell stehen %USERPROFILE% oder %APPDATA% zur Verfügung, in VBS müssen sie aber aufgelöst werden.

Grüße
bastla
fraggle666
fraggle666 17.04.2008 um 11:10:54 Uhr
Goto Top
Hey!

Es hat funktioniert! Ich bin begeistert face-smile
Auf
<IF NOT (fs.folderExists(WshShell.ExpandEnvironmentStrings("%APPDATA%\Quest Software"))) THEN>
wäre ich nie gekommen...

Vielen Dank euch beiden!
bastla
bastla 17.04.2008 um 11:18:24 Uhr
Goto Top
@fraggle666

Freut mich, dass wir das mit vereinten Kräften geschafft haben ... face-smile

Vielleicht nochmals der Hinweis auf die Formatierung beim Posten: Wenn Du Dein Script (Deine Scriptzeile) zwischen < code> und < /code> (jeweils ohne Leerzeichen) stellst, wird es als Codeblock dargestellt.

Grüße
bastla
fraggle666
fraggle666 17.04.2008 um 11:23:34 Uhr
Goto Top
 Testcode 

Alles klar, das werde ich das nächste mal beherzigen face-smile