0

vb.net 2008 では、別のコンピューターにあるバッチ ファイルを実行したいと考えています。エラーはありませんが、何も起こりません。コードは次のとおりです。

Dim pStart As New System.Diagnostics.Process
Dim startInfo As New System.Diagnostics.ProcessStartInfo(serverpath & "\file.bat")
startInfo.RedirectStandardOutput = True
startInfo.WindowStyle = ProcessWindowStyle.Hidden
startInfo.UseShellExecute = False
pStart = System.Diagnostics.Process.Start(startInfo)
pStart.WaitForExit()
pStart.Close()
4

3 に答える 3

1

リモート コンピューターでプロセスを実行するには、Sysinternals の無料の psexecを使用できます。

サンプルコードで行っているように、適切なパラメーターを使用して、必要な権限を持って呼び出すことができます。

于 2009-05-21T20:10:02.867 に答える
1

バッチファイルを実行可能ファイルとして使用してプロセスを作成しようとしたことはありません。プログラムとして常にcmd.exeを使用する必要がありました。これは過去に私のために働いていました:

Dim startInfo As New System.Diagnostics.ProcessStartInfo("cmd.exe", "/c " & serverpath & "\file.bat")

引数リストの一部としての "/c" は、バッチ ファイルの完了後に cmd.exe を終了するように指示します。

RedirectStandardOutput を使用する場合は、実際には RedirectStandardError を使用し、それらのストリーム (OutputDataReceived および ErrorDataReceived) でデータをキャッチするために Process クラスのイベントにもサブスクライブします。そうしないと、バッチ スクリプトをデバッグする方法がありません。

于 2009-05-21T18:17:41.500 に答える
0

これは、権限の問題のように見えます。まだ除外していない場合は、そのようにトラブルシューティングします。
ローカル コンピューターから同じバッチ ファイルを実行しようとしましたか?
アクセス許可の問題である場合は、ファイルを実行する前にローカルにコピーするか、ファイルがあるリモート コンピューターにドライブをマップしてから、新しいパスからバッチ ファイルを実行することで解決できます。

さらに、問題の原因となっている可能性のあるバッチ ファイルの内容もわかりません。バッチ ファイルを投稿するか、バッチ ファイルを投稿できない場合は、投稿できるバッチ ファイルを使用します。たとえば、バッチ ファイルは現在の日時をファイルに書き込みます。

于 2009-05-21T19:53:23.180 に答える