2

私はHTAを使用しており、その中にwshell.runを使用してコマンドラインを実行する必要がある関数があります。この行をWindowsの「Run」utilで記述している場合は、正常に機能しています。HTAでも機能するようにします。 wshell.runを使用します。

行は次のとおりです。

C:\ xxxx \ xxx \ xxx.EXE aaa.psl abc

(名前はここではxxxです-実際のコードではありません。)

私が使用しているjavascriptコードでは:

function runCmd()
{
 wshShell.exec( "C:\xxxx\xxx\xxx.EXE aaa.psl abc" );
}

xxx.EXEアプリケーションで発生したエラーは、「aaa.pslファイルを開けませんでした」と表示されます。

ありがとう、ロテム

4

2 に答える 2

5

xxx.EXEプログラムがまったく実行されていないことに驚いています。コマンドでこれらの円記号をエスケープする必要があります。

wshShell.Exec( "C:\\xxxx\\xxx\\xxx.EXE aaa.psl abc" );
//                ^-----^----^--- here

aaa.pslファイル名で同じことをしている場合、それが問題です。

ファイルへのフルパスを渡していない場合、ほとんどのプログラム(すべてではない)はそれが現在のディレクトリaaa.pslにあることを期待するので、現在のディレクトリが正しく設定されていることを確認する必要があります(ただし絶対パスを使用します)パスがより良いオプションかもしれません)。

たとえば、メモ帳にファイルを編集するように指示する例を次に示します。

shell = WScript.CreateObject("WScript.Shell");
shell.Exec("c:\\windows\\system32\\notepad.exe c:\\temp\\temp.txt");

...または現在のディレクトリ経由:

shell = WScript.CreateObject("WScript.Shell");
shell.CurrentDirectory = "c:\\temp";
shell.Exec("c:\\windows\\system32\\notepad.exe temp.txt");
于 2010-12-22T10:24:09.033 に答える
1

OkkkkTJが男です!! :)

execを置き換えて実行することで、最終的にあなたの助けを借りてそれを達成しました:

これが最終的な(そして機能している)コードです:

function runCmd()
{
wshShell.CurrentDirectory = "G:\\xxx\\xxx";
wshShell.run( "xxx.EXE xxx.psl abc" ); 
}
于 2010-12-23T16:24:03.013 に答える