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も見ています
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
複数のbatファイルを自動実行したい
その他(プログラミング・Web制作)
-
Windows10のタスクスケジューラの仕様
Windows 10
-
-
4
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
5
batファイルで、call使っても戻ってこない
iOS
-
6
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
7
バッチファイル内のコマンドプロンプトを1つずつ実行するにはどうしたらよいでしょうか?
IT・エンジニアリング
-
8
PL/SQLで@ファイル名が反応しません
Oracle
-
9
python エラー
その他(プログラミング・Web制作)
-
10
[VBScript]ファイルの削除
Visual Basic(VBA)
-
11
【バッチファイル】ホスト名をファイル名につけたい【変更】
その他(コンピューター・テクノロジー)
-
12
Dirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)
UNIX・Linux
-
13
バッチファイルで昨日の日付を取得
その他(プログラミング・Web制作)
-
14
バッチファイルで変数の中身をファイル出力したい
UNIX・Linux
-
15
ストアド・プロシージャをバッチから起動させて実行する方法
Oracle
-
16
ショートカットの作成とコピー
その他(プログラミング・Web制作)
-
17
一連のプログラムを一定間隔で順番に起動する動作を繰り返すソフト
フリーソフト
-
18
テーブルの存在チェックについて
Oracle
-
19
ショートカットをデスクトップに作るコマンドを教えて下さい
その他(プログラミング・Web制作)
-
20
IPアドレス「0/16」とか「0/24」って何?
ネットワーク
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pingは正常なのにtracerouteで...
-
エクセルの表にヘンな枠が・・・
-
Mac de プログラム
-
Win 10で ラジリンガル
-
SONYの音楽ソフト「x-アプリ」...
-
エクセルからアクセスのプロシ...
-
python IDLEで訂正、削除のやり...
-
最初の一度しか実行されないロ...
-
コマンドプロンプト「システム...
-
Macでlsした際の、ファイル名の...
-
ROBOCOPY cmdで正常に処理され...
-
エクセル時間毎ごとにマクロを...
-
bashで変数にパイプを入れ、コ...
-
初回ログイン時のみ実行
-
taskkill をバッチ処理できない。
-
[別のユーザーとして実行]が右...
-
Linux のシェルスクリプトの強...
-
ACCESSレポートをPDFに出力したい
-
貴方のモットーを教えて下さい...
-
Windows VistaやWindows7にて、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
貴方のモットーを教えて下さい...
-
SONYの音楽ソフト「x-アプリ」...
-
エクセルの表にヘンな枠が・・・
-
pingは正常なのにtracerouteで...
-
LD_LIBRARY_PATHって?
-
Openイベントを開始させないで...
-
shutdownコマンド実行の残り時...
-
やっぱ駄目だわ!さっきソープ...
-
python IDLEで訂正、削除のやり...
-
ROBOCOPY cmdで正常に処理され...
-
バッチファイル内の各コマンド...
-
windows10のごみ箱をrd /s /q C...
-
シャットダウンバッチがうまく...
-
エクセルからアクセスのプロシ...
-
linuxサーバーのキャッシュをク...
-
最初の一度しか実行されないロ...
-
エクセル時間毎ごとにマクロを...
-
taskkill をバッチ処理できない。
-
linux初心者です wineをつかっ...
-
emacsでCtrl+zを押してサスペン...
おすすめ情報