プロが教えるわが家の防犯対策術!

Windows10 Windows システムツールに入っている、
コマンドプロンプト(cmd.exe)についてです。

a.bat、b.bat、c.bat、d.bat があって、それぞれの処理をさせてます。

a、b、c、d 全ての処理を1回でさせる為の、
ALL.bat も作りたいのですが、
4つのbatファイル内のすべての記述を並べて貼り付ければ良いと思いますが、

a.bat に修正がある場合、ALL.bat も忘れずに修正しないといけません。

ALL.bat 内に、以下の様な記述のみで済ませられないでしょうか?
 Call a.bat
 Call b.bat
 Call c.bat
 Call d.bat

具体的には、毎日1:00に動作させたいので、
タスクスケジューラに、
1:00 a.bat、1:01 b.bat、1:02 c.bat、1:03 d.bat
と4つ個別に登録するのもあまりスマートじゃないなぁと思った次第です。

出来る対応策を色々教えて頂けると幸いです。

A 回答 (8件)

>batからbatをcallできますか?


Win10環境では試したことないんで正答はできませんが

>a.bat に修正がある場合、ALL.bat も忘れずに修正しないといけません。
なぜ?
ALL.bat は a.bat を呼び出してるだけで内容の変化なんて知らんでしょ?

>ALL.bat 内に、以下の様な記述のみで済ませられないでしょうか?
それで充分だと思いますが、うまくいかなかったとかですか?
    • good
    • 0
この回答へのお礼

>>a.bat に修正がある場合、ALL.bat も忘れずに修正しないといけません。
>なぜ?
>ALL.bat は a.bat を呼び出してるだけで内容の変化なんて知らんでしょ?

これは、abcdの記述をずらずらっとALL.bat にコピペした場合の話です。

お礼日時:2021/07/31 20:54

>これは、abcdの記述をずらずらっとALL.bat にコピペした場合の話です


意味が解らない。
abcd
って何?

ああ、ALL.bat の中身をいちいち変えたくないから
それぞれサブルーチンである a.bat ~ d.bat を記述してcallできないか、
って話ですか?
ごめんなさいね理解力が乏しくて

やってみたらいいんじゃないの
たしかBATch でもそういうサブルーチンCall はできますよ

ってか
アイデアあるならやってみたらできるかどうかわかるんじゃないの
    • good
    • 0

> batからbatをcallできますか?


はい、できます。
*.batのみではなく、
その他の実行ファイルを、コマンドから起動するのと同じです。

先ずは、簡単な*.batを作って、別な*.batを起動してみてください。
    • good
    • 0
この回答へのお礼

つまり、
ALL.bat 内の記述は
--------------------
 @echo off
 a.bat
 b.bat
 c.bat
 d.bat
--------------------
みたいな感じで良いという事ですか?
同じフォルダ内(ドキュメント\バッチ処理\)内にまとめてあれば、
上記のままでパス表記も不要でしょうか?

お礼日時:2021/07/31 22:06

a~dまでのbatは全て同時に実行されてしまってもいいんですか?


それともaが終わったらbといったように前のbatの終了を待ちますか?
    • good
    • 0
この回答へのお礼

もともとコマンドプロンプトはインタープリタだから1行ずつ順番に処理していくという認識でした。
なので、
「aが終わったらbといったように前のbatの終了を待ちます」しかないと思ってましたし、
いずれにしてもa→b→c→dと処理して欲しいです。

しかし同時実行なんて可能なんでしょうか?

お礼日時:2021/07/31 22:03

>a→b→c→dと処理して欲しいです。


これはbを実行する際に以下のどちらを希望ですか?
・aの終了を待つ
・aの終了を待たない
待つ方を希望しているのだと思いますが念のため確認です。

>しかし同時実行なんて可能なんでしょうか?
可能です。

■参考
 maku77.github.io/windows/cmd/parallel.html
    • good
    • 0
この回答へのお礼

なるほど、別コマンドプロンプトを開く事ができて、
それが同時実行なんですね。
今回は、順番に処理しきって欲しいので、同時実行はあえてしません。
また、a→b→c→d 途中でストップせずに完了させたいです。
つまり「aの終了を待たない」です。
寝てる間に定時実行して、毎日勝手に処理し続けるイメージです。

お礼日時:2021/07/31 22:27

>同時実行はあえてしません。


>つまり「aの終了を待たない」です。
これは相反していると思うのですが・・・。
aの終了を待たないならばbも実行してしまうので、それはaとbの同時実行であると言えませんか?
開始時刻にわずかに差があったとしても。

>4つのbatファイル内のすべての記述を並べて貼り付ければ良いと思いますが、
>a.bat に修正がある場合、ALL.bat も忘れずに修正しないといけません。
他にも、これはALL.bat内にa-d.batの中身を書くのであれば、
a.batは関係なくなるので修正するのはALL.batだけですよね?

すみませんが、今一どうしたいのか分からないので、
CALLなりさっきのURL通りなり、自分の要望にあった挙動の方を選択するか、
他の回答者さんの回答をお待ちいただければと思います。
    • good
    • 0
この回答へのお礼

すみません、、、、
aの終了を待つ、でした。

お礼日時:2021/07/31 23:41

No.3です。



> 上記のままでパス表記も不要でしょうか?
何でもかんでも教えて君では上達しませんから、
簡単な*.batを作ってお試しください。
失敗してもPCが壊れる事はないので…
    • good
    • 0

>ALL.bat 内に、以下の様な記述のみで済ませられないでしょうか?


> Call a.bat
> Call b.bat
> Call c.bat
> Call d.bat

これでも動くかもだけど
私はいつもcalIは小文字から始める。

 call a.bat
 call b.bat
 call c.bat
 call d.bat
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!