
Windows環境にてDOSコマンドでバッチファイルを作成して実行します。
バッチファイル内には複数のコマンドを記述しており、上から順番に
処理されて処理が完了してから次のコマンドを実行することを期待しています。
例) ping PC_NAME_A
ping PC_NAME_B
実際に実行してみて1つ目のコマンドが終了してから、2つ目の
コマンドが実行されているのは確認できているのですが、
この「1つ目のコマンドが終了してから次のコマンドを実行する」という
仕様を裏付ける記事などが見つけられません。(Microsoftのサイトなど)
どなたかご存知の方がいらっしゃいましたら教えてください。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
それはプログラムの書き方で決まります。
例えばping.exeは処理が終了するまで次の入力を受け付けませんが、Windowsのアクセサリにある電卓(calc.exe)は電卓のウィンドウが表示されればコマンドプロンプトは次の入力待ちになります。
プログラムを起動したときにWindowsの新規タスクとして実行した場合とcmd.exeの子プロセスととして実行したという違いです。
一般的なコマンドラインアプリケーションは
main() {
~色々な処理~
exit;
}
という書き方で、main()関数が終了するまでプロセスを占有します。
マルチタスク(或いはマルチセッション)の場合はセッションIDを新規取得しOSに処理を委託してからプロセスを終了します。
MSDNのセッション管理とかマルチセッション関連の項目を見ればわかるはずです。
※コマンドラインアプリケーションとWindowsアプリケーションの違いでもOK。
ご回答ありがとうございます。
結局、これだという情報に辿り着けませんでしたがstart /waitコマンドにて処理完了を制御することで一応落ち着きました。
いろいろとバッチを作ってみましたが、先に実行している処理が完了してから次の処理が呼ばれているようです。
No.4
- 回答日時:
こんにちは
#3の訂正です。
勘違いしてました。心配させてしまってごめんなさいm(__;m
参考URLは、マイクロソフトが技術情報を公開している microsoft technetのURLです。
そこに「バッチ ファイルを使用する」コンテンツがあって、実行順序に関して以下のように書いてありました。 一部引用します。
>コマンド プロンプトでそのファイル名を入力すると、Cmd.exe によってファイルに記述されている順番でコマンドが実行されます。
従って記述されている順番でコマンドは実行されます。
注意すべき点は、ここには「順番で実行されるが先に実行したタスクの終了を待つ」とは一切書かれていないです。
つまり、OSの制限にかからない限り、タスクの終了を待たずに次々に新たなタスクを実行しないとは云っていないことです(リソースが空いている間は、次々に実行できるからマルチタスクですよね)。
私が間違ったのは、実際に先に処理時間のかかるタスクを記述して、次に短い処理時間のタスクを書いたとき、あたかも短いタスクが先に終わるので順番を無視して先に走ったように感じてしまったことでしたm(__)m
参考URL:http://technet.microsoft.com/ja-jp/library/cc758 …
ご回答ありがとうございます。
結局、これだという情報に辿り着けませんでしたがstart /waitコマンドにて処理完了を制御することで一応落ち着きました。
いろいろとバッチを作ってみましたが、先に実行している処理が完了してから次の処理が呼ばれているようです。
No.2
- 回答日時:
そういうものです。
って言うんじゃだめなんですね。処理の順番が規定されていないと、順次処理が
必要なものはバッチで書けなくなるんですが…
一般的な説明でよければですが
Wikipediaのバッチ処理を参照してみてください。
ご要望に沿えるかどうかは疑問ですが。
参考URL:http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83% …
No.1
- 回答日時:
こんにちは
マルチタスクOSでは、実行順序は保証されません。
実行順序を確保するときは、start コマンドの引数としてコマンドを指定します。
start /wait ping PC_NAME_A
start /wait ping PC_NAME_B
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
複数のbatファイルを自動実行したい
その他(プログラミング・Web制作)
-
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
バッチファイル内のコマンドプロンプトを1つずつ実行するにはどうしたらよいでしょうか?
IT・エンジニアリング
-
-
4
runas実行した時にきかれるパスワードを手入力以外で読み込ませたい
その他(プログラミング・Web制作)
-
5
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
6
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
7
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
8
バッチファイル 文字列にスペースがある場合
その他(プログラミング・Web制作)
-
9
コマンドプロンプトによるフォルダ内のファイル存在有無
UNIX・Linux
-
10
バッチファイルでサーバーのファイルをクライアントへコピーしたい
その他(コンピューター・テクノロジー)
-
11
batファイルで、call使っても戻ってこない
iOS
-
12
バッチファイルで変数の中身をファイル出力したい
UNIX・Linux
-
13
コマンドプロンプトのエラーについて
その他(パソコン・周辺機器)
-
14
Windows10のタスクスケジューラの仕様
Windows 10
-
15
Dirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)
UNIX・Linux
-
16
Batch: フォルダ内の特定のファイル以外を全て削除
その他(プログラミング・Web制作)
-
17
moveコマンドで別のドライブにフォルダを移動
その他(OS)
-
18
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
19
同一のホスト名で何か問題がありますか?
UNIX・Linux
-
20
ファイル名の順番通りにコピーしたい
Windows Vista・XP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PowerShellのスクリプト実行に...
-
pingは正常なのにtracerouteで...
-
Linux のシェルスクリプトの強...
-
LD_LIBRARY_PATHって?
-
SONYの音楽ソフト「x-アプリ」...
-
linux でバッチファイを作成し...
-
エクセルの表にヘンな枠が・・・
-
最初の一度しか実行されないロ...
-
シャットダウンバッチがうまく...
-
cp -f でも上書き確認が出てし...
-
IF文でコンピュータ名による条...
-
バッチファイル内の各コマンド...
-
Openイベントを開始させないで...
-
ネットワークドライブ上のVBScript
-
shutdownコマンド実行の残り時...
-
デフラグの目安
-
emacsでCtrl+zを押してサスペン...
-
信頼済みサイト登録をbatファイ...
-
Linuxのターミナルで別プロセス...
-
バッチファイルが実行されない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SONYの音楽ソフト「x-アプリ」...
-
pingは正常なのにtracerouteで...
-
エクセルの表にヘンな枠が・・・
-
Linux のシェルスクリプトの強...
-
PowerShellのスクリプト実行に...
-
最初の一度しか実行されないロ...
-
sudoで実行したコマンドの実行...
-
大手町駅。それはホームから非...
-
SPI非言語の問題 解説お願いします
-
windows10のごみ箱をrd /s /q C...
-
バッチファイル内の各コマンド...
-
Openイベントを開始させないで...
-
シャットダウンバッチがうまく...
-
サーバでログオフするとアプリ...
-
エクセルからアクセスのプロシ...
-
taskkill をバッチ処理できない。
-
emacsでCtrl+zを押してサスペン...
-
shutdownコマンド実行の残り時...
-
python IDLEで訂正、削除のやり...
-
ACCESSレポートをPDFに出力したい
おすすめ情報