4

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をどのように定義できるかということです。
''で囲んでみましたが、うまくいきませんでした。助言がありますか?

乾杯クリス

4

4 に答える 4

5

スペースのあるパスは通常、引用符(")で囲まれます。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
于 2010-08-11T12:46:11.723 に答える
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 
于 2017-02-07T08:04:55.120 に答える
0

1、OSが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、フルパス内で2つの二重引用符を使用します。

WScript.CreateObject("WScript.Shell").Run """C:\Program Files\DirName\FileName.exe"" /option1 value1 /option2 vaule2 argv3"
于 2017-04-18T02:30:35.340 に答える
0

これは、パラメータではなく呼び出されたプログラムにスペースが含まれているという点で、説明されている問題とは異なります。「ファイル名に空白が含まれていると、whshell.runは機能しません」とグーグルで検索すると、ここに表示されます。

呼び出されたプログラムの名前にスペースが含まれている場合は、トリプルクォートする必要があります。(開始引用符と終了引用符は空白の文字列を定義し、囲まれた二重引用符はその文字列内の単一引用符にマップされます。)2つの実用的な例があります。1つ目は、三重引用符を使用します。2つ目は、名前から空白を効果的に削除します。動作しない例は、すべきでないこと(および私が最初に試したこと)を示しています。

' 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
于 2017-11-07T05:30:17.523 に答える