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も見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
自分独自の健康法はある?
こうしていると調子がいい!みたいな自分独自の健康法、こだわりはありますか?
-
【選手権お題その3】この画像で一言【大喜利】
とあるワンシーンを切り取った画像。この画像で一言、お願いします!
-
【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
【お題】追い込まれた犯人が咄嗟に言った一言とは?
-
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
複数のbatファイルを自動実行したい
その他(プログラミング・Web制作)
-
Windows10のタスクスケジューラの仕様
Windows 10
-
-
4
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
5
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
6
バッチファイルで昨日の日付を取得
その他(プログラミング・Web制作)
-
7
batファイルで、call使っても戻ってこない
iOS
-
8
バッチファイルで変数の中身をファイル出力したい
UNIX・Linux
-
9
バッチファイル内のコマンドプロンプトを1つずつ実行するにはどうしたらよいでしょうか?
IT・エンジニアリング
-
10
runas実行した時にきかれるパスワードを手入力以外で読み込ませたい
その他(プログラミング・Web制作)
-
11
バッチファイル、順番を指定して複数のプログラムを起動。
その他(プログラミング・Web制作)
-
12
バッチファイルを実行後、終了のお知らせ。
iOS
-
13
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
14
python エラー
その他(プログラミング・Web制作)
-
15
PL/SQLで@ファイル名が反応しません
Oracle
-
16
複数のバッチを同時並行で起動したい
UNIX・Linux
-
17
PL/SQLをWindowsのBATファイルで実行するには
Oracle
-
18
一連のプログラムを一定間隔で順番に起動する動作を繰り返すソフト
フリーソフト
-
19
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
20
コマンドプロンプトによるフォルダ内のファイル存在有無
UNIX・Linux
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SONYの音楽ソフト「x-アプリ」...
-
[Access] パススルークエリーで...
-
pingは正常なのにtracerouteで...
-
sudoで実行したコマンドの実行...
-
Linux のシェルスクリプトの強...
-
linux でバッチファイを作成し...
-
emacsでCtrl+zを押してサスペン...
-
エクセルの表にヘンな枠が・・・
-
bashで変数にパイプを入れ、コ...
-
バッチファイル内の各コマンド...
-
LD_LIBRARY_PATHって?
-
システム終了時にバッチファイ...
-
postgres のコマンドが実行でき...
-
ROBOCOPY cmdで正常に処理され...
-
Dドライブでchkdskが走らなくな...
-
PowerShellってなんでイッパツ...
-
コマンドプロンプトからC:のデ...
-
UbuntuにROSをインストールしたい
-
PowerShellのスクリプト実行に...
-
Mac de プログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SONYの音楽ソフト「x-アプリ」...
-
pingは正常なのにtracerouteで...
-
エクセルの表にヘンな枠が・・・
-
Linux のシェルスクリプトの強...
-
バッチファイル内の各コマンド...
-
Openイベントを開始させないで...
-
最初の一度しか実行されないロ...
-
python IDLEで訂正、削除のやり...
-
LD_LIBRARY_PATHって?
-
sudoで実行したコマンドの実行...
-
windows10のごみ箱をrd /s /q C...
-
shutdownコマンド実行の残り時...
-
シャットダウンバッチがうまく...
-
linuxサーバーのキャッシュをク...
-
ROBOCOPY cmdで正常に処理され...
-
CRONを隔週の日曜日に実行させたい
-
taskkill をバッチ処理できない。
-
linux初心者です wineをつかっ...
-
ACCESSレポートをPDFに出力したい
-
英語版での表示
おすすめ情報