1

Run (または Exec) メソッドを VBS で動作させるのに問題があります。任意のコマンドを実行するのに非常に苦労していたので、コマンドをバッチ ファイルに入れ、Run を使用して .bat ファイルを呼び出そうとしました。この方法でもうまくいきません。コードは次のとおりです。

Dim objShell
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "C:\Path\to\my\batch.bat"
Set objShell = Nothing

コマンド プロンプトを開いて「C:\Path\to\my\batch.bat」と入力するだけで、期待どおりに動作します。ただし、上記の VBS コードを使用すると、何も実行されません。バッチ ファイル内のコマンドは、実行可能ファイルへのパスと、実行可能ファイルが作用するファイルへのパスで構成される単純なものです。上記の実行コマンドを次のように変更すると、バッチ ファイルを呼び出そうとするのと同じ結果になります。まったく何もありません。

objShell.Run "C:\Path\to\my\executable.exe C:\Path\to\my\file.extension"

私の最終的な目標は、スクリプト内でファイル文字列へのパスを作成することですが、ハードコーディングでさえ失敗した場合、それは無関係に思えます。どんな助けでも大歓迎です。

4

2 に答える 2

2

2つの変更でこれを解決できました。まず、コマンドの先頭に「cmd /c」を追加しました。

これにより、別のエラー (ファイルが見つかりません) が発生し、実際には、実行しようとしていたプログラムのタイミングの問題が原因でした。Run コマンドの後 (objSehll オブジェクトを破棄する前) に 1 秒の遅延を追加すると、この問題が解決されました。

回答してくれたすべての人に感謝します。

于 2013-08-28T15:59:41.980 に答える
1

試す

objShell.Exec "C:\Path\to\my\batch.bat"

または

objShell.Run "%comspec% /K C:\Path\to\my\batch.bat"
于 2013-08-27T15:18:27.757 に答える