2010-08-11 2 views
0

Я хотел бы иметь возможность вызвать следующую CMD команду в VBS скрипт:VBS CMD путь пространства

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

я придумал следующий сценарий VBS:

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

Что касается как я понимаю, это будет работать правильно, если у targetdir не было пробелов, например c: \ bla. Затем приложение будет установлено в этой конкретной папке.

Очевидный вопрос: как я могу определить targetdir с пробелами в качестве местоположения пути.
Я попытался окружить его «но», но это не сработало для меня. Какие-либо предложения?

Приветствия

Крис

ответ

2

Дорожки с пробелами, как правило, заключены в кавычки ("). В VBScript, чтобы вставить символ цитаты в строку, вы используете двойные кавычки (""). Таким образом, ваш код должен выглядеть следующим образом:

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

Кроме того, я не уверен, что если cmd /c на самом деле нужен здесь, так что он может работать таким образом, а также:

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

Я закончил с

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 
0

1, если операционная система поддерживает 8.3 имя файла, вы можете попробовать короткое имя файла:

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) 

Затем перепрограммируйте C: \ Program Files \ с PROGRA ~ 1.

2, используйте две двойные кавычки в пределах полного пути.

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

Это не совсем проблема, описанная в том, что вызываемая программа, а не параметр содержит пробел. Googling «whshell.run не работает, если filename содержит пробелы» доставил меня сюда.

Когда вызываемая программа содержит пробел в своем имени, она должна быть тройной. (Начальные и конечные кавычки определяют строку с пробелами, а заключенные двойные кавычки отображаются в одинарные кавычки внутри этой строки.) Существует два рабочих примера. Первый использует тройные кавычки. Второй эффективно удаляет пробелы из имени. Неработающие примеры показывают, что не делать (и что я пробовал в первую очередь.)

' 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 
Смежные вопросы