Frage

Ich möchte in der Lage sein, den folgenden Befehl cmd ruft aus einem vbs-Skript:

cmd Client\setupclient.exe /q /targetdir "c:\program files\Microsoft CRM"

Ich kam mit dem folgende vbs Skript auf:

Set oShell = WScript.CreateObject ("WScript.Shell") 
oShell.Run "cmd /c Client\setupclient.exe /q /targetdir c:\program files\Microsoft CRM", 1, true

Was mich betrifft, würde dies ordnungsgemäß funktionieren, wenn die targetdir keine Leerzeichen hatte, z c: \ bla. Dann würden die App in diesem speziellen Ordner installiert werden.

Die offensichtliche Frage ist, wie kann ich die targetdir mit Leerzeichen als Pfad Standort definieren.
Ich versuchte es mit ‚‘ zu umgeben, aber das ist nicht für mich zu arbeiten. Irgendwelche Vorschläge?

Prost chris

War es hilfreich?

Lösung

Pfade mit Leerzeichen werden in der Regel in Anführungszeichen (") eingeschlossen. In VBScript, ein Anführungszeichen in einen String einzufügen Sie doppelte Anführungszeichen ("") verwenden. Also, Ihr Code soll wie folgt aussehen:

oShell.Run "cmd /c Client\setupclient.exe /q /targetdir ""c:\program files\Microsoft CRM""", 1, true

Auch ich bin nicht sicher, ob cmd /c tatsächlich hier gebraucht wird, so ist es auf diese Weise funktionieren kann auch:

oShell.Run "Client\setupclient.exe /q /targetdir ""c:\program files\Microsoft CRM""", 1, true

Andere Tipps

ich am Ende mit

AMPath = "E:\Program Files (x86)\Dropbox\Client\Dropbox.exe"
If FileSyst.Fileexists(AMPath) Then 
 AMPath = chr(34) & AMPath & chr(34)
OBJ_Shell.run (AMPath)
End If 

1, wenn Ihr Betriebssystem unterstützt 8.3-Dateinamen, können Sie kurze Dateinamen versuchen:

cd c:\
dir /x
2017/04/17  20:53    <DIR>          PROGRA~1     Program Files
2017/04/18  03:40    <DIR>          PROGRA~2     Program Files (x86)

Dann repalce. C: \ Programme \ mit PROGRA ~ 1

2, verwenden Sie zwei doppelte Anführungszeichen innerhalb vollständigen Pfad.

WScript.CreateObject("WScript.Shell").Run """C:\Program Files\DirName\FileName.exe"" /option1 value1 /option2 vaule2 argv3"

Dies ist nicht genau das Problem beschrieben, dass das aufgerufene Programm eher als ein Parameter ein Leerzeichen enthält. Googeln „whshell.run funktioniert nicht, wenn Dateiname Leerzeichen enthält“ hier mir.

Wenn das aufgerufene Programm ein Leerzeichen in seinem Namen enthält, muss er dreifach zitiert werden. (Die Start- und End Anführungszeichen definieren eine Zeichenkette mit Rohlingen und die beigefügten Anführungszeichen Hochkommata innerhalb dieser Zeichenfolge zugeordnet sind.) Es gibt zwei Arbeitsbeispiele. Die erste verwendet dreifache Anführungszeichen. Die zweite entfernt effektiv die Rohlinge aus dem Namen. Die Nicht-Arbeitsbeispiele zeigen, was nicht zu tun (und was ich zuerst versucht.)

' Drive D:\Program Files\Batch\Monitor.bat with no associated command window

Set WshShell = CreateObject("WScript.Shell")

' These methods work: (Select one)
  Return = WshShell.Run("""D:\Program Files\Batch\Monitor.bat""", 0)
' Return = WshShell.Run("D:\.D-DISK\Monitor.bat", 0)
' Note: Here "D:\.D-DISK\Monitor.bat" is a symbolic link to
'       "D:\Program Files\Batch\Monitor.bat"

' The following methods fail because of the space in the filename.
' WshShell.Run( chr(34) & D:\Program Files\Batch\Monitor.bat & Chr(34), 0 )
' Return = WshShell.Run("D:\Program Files\Batch\Monitor.bat", 0)
' Return = WshShell.Run(""D:\Program Files\Batch\Monitor.bat"", 0)

Set WshShell = Nothing
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top