2016-07-20 10 views
1

私はperlスクリプトからbatファイルを呼び出しています。
batファイルの実行に時間がかかるため、perlスクリプトはbatファイルが完了し、次の行から実行を続けるのを待っていません。Perlスクリプトは.batファイルが完了して実行を継続するのを待っていません

batファイルの実行が終了するまでperlスクリプトの実行を一時停止し、batファイルが完了すると再開できる方法はありますか。

私はこのような何かを書いた:

system ("start $bat_file"); 
print ("Hello"); 

だから、batファイルが終了する前でもハロー印刷します。

は実際に私が達成したいものです。

  1. マイbatファイルは、私はbatファイルが実行されると、別の場所にそれらのファイルをコピーするいくつかのファイル
  2. を作成します。

しかし、batファイルが完了するのを待たずに、batファイルがまだ処理されていて出力ファイルを生成していないため、存在しないフォルダをコピーしようとするため、コピーが失敗します。

:batファイルを完成するまでの時間は固定ではなく、毎回変更されます。

+2

のために求めている効果を達成するためにちょうど

system($bat_file); 

を書き込むことができますか? – simbabque

+1

はい、あります。しかし、それは正確にあなたがやっていることに多く依存しています。そしてそのために、いくつかのコード例が必要になります。 – Sobrique

+0

はい、私はシステムを使用しました。 私は次のような記述をしています: system( "start $ bat_file"); –

答えて

9

プロセスを作成してすぐに戻る

しかし、startはまったく必要ありません。あなたは `system`、` exec`、 `qx`またはバッククォート` \を ``使用しましたあなたは

+0

それは働いた。ご協力いただきありがとうございます。 –

2

Windowsでstartコマンドを使用している場合は、あなたが持っている問題がsystem

start commandやない問題である、それはあなたのプログラムを起動しますが、終了を待ちません。

あなたはそれがされるあなたのコードで
start/waitを使用する必要があります:あなたは、/waitオプションを指定しないstart意志をstartコマンド

を削除する必要が

system ("start /wait $bat_file"); 
print ("Hello");` 

Start Manual

+1

'start'を使うのは無意味です。 – Borodin

+1

あなたが言及したコードを使用すると、コールは決してbatファイルが終了した後でも呼び出し元に返されません。 justsは中断したままになり、batファイルが終了した後は操作を再開しません。 しかし、私がsystem($ bat_file)を書くとうまくいきます。 –

関連する問題