2017-04-24 143 views
0

Windowsタスクスケジューラを使用しています。私は複数のコマンドを実行しています。私はtask1.bat、task2.bat、およびtask3.batを呼び出します。これらのスクリプトのそれぞれは、異なるPsexecコマンドを実行します(psexecバージョン2.11)。複数のコマンドを続行しているときにPsexecが失敗する

task1.bat、task2.bat、およびtask3.batを個別に実行すると、これらのスクリプトは正常に実行されます。ただし、task1.batが正常に実行されると、task2.batとtask3.batは通常「Couldnt access servername。アクセスが拒否されました。コマンドの構文が正しくありません」というエラーで失敗します。

Psexecでは、コマンドを個別に実行するとうまく動作するため、エラーのようです。 Psexecを強制的に終了/終了させる方法はありますか?(タイムアウトを入れるだけでなく)次のスクリプトに移動する前に? psexecが掛けられているため、次のものが失敗するようです。

+1

をあなたが使用している正確なコマンドラインと、彼らが作り出す出力をコピーして貼り付けることができますか? 3つの 'cmd'シェルを開き、コマンドを同時に実行する準備をします。それは何を生み出すのですか? – lit

+0

「連続して実行する」とは*正確にはどういう意味ですか?同時に起動する別々のタスクとして実行している場合は、互いに重複するため、問題が発生する可能性があります。 –

+0

用語に同意しましょう。 「連続的に」および「順次に」は、別のものが完了してから実行され、同時に実行されないことを意味する。 「同時に」とは、複数のプロセスが同時に実行されることを意味します。 psexecを同時に実行すると問題が発生しますか? – lit

答えて

-1

実行可能ファイルを待機させて起動するだけです。

start /wait psexec.exe 

か、単に

start /w psexec.exe 

だから私は個人的にやる、それが完了すると、単一のファイルを作成し、あなたが3つのバッチファイルを取り除くことを示唆していると、待機して各実行可能ファイルの実行をしましょう次のものなど、このような

何か:これはSEQUで各PSEXECを実行

start /w psexec do something 
echo First process completed 
start /w psexec do next thing 
echo Second process completed 
start /w psexec do last thing 
echo /w This process completed 

前のものが完了したときにのみ次のものが始まります。

お互いに直接実行したくない場合は、タイムアウトを追加することもできます。

start /w psexec do something 
echo First process completed 
timeout 300 
start /w psexec do next thing 
echo Second process completed 
timeout 400 
start /w psexec do last thing 
timeout 100 
echo /w This process completed 
+0

バッチ・スクリプトでは、コマンドの実行が完了するのを待つため、通常はバッチ・スクリプトで 'start/wait'は必要ありません。 (もし特定のインストールされたアプリケーションがパス上になくても見つけることができるなど、 'start'に特有の機能が必要な場合は、' start'だけでなく 'start/wait'を指定したいかもしれません。でも、この場合はおそらくどちらかは必要ありません。) –

+1

@HarryJohnston実際には実行されません。プログラムが実行されるのを待っています。エラーなしで実行されると、cmd行に戻ります。待機を追加することで、プログラムが終了するのを待つように指示します。あなたはそれを試すことができます。 cmd.exeを実行して 'notepad.exe'を実行すると、メモ帳が起動してcmdlineに戻ります。 'start/w notepad.exe'でこれを行うと、cmd行は復帰する前にメモ帳が終了するのを待ちます。 –

+0

これは、*対話的に*コマンドを入力したときの動作ですが、バッチスクリプトでは前述のように動作します。それを試してみてください! –

0

の.batスクリプトは、バッチファイルを作成して実行した場合に順次実行されます:

CALL task1.bat 
CALL task2.bat 
CALL task3.bat 
関連する問題