• ベストアンサー

バッチファイルの構文について

会社の人が作った.batファイルを参考に、自分で勉強しています。 ごく簡単なことですが、質問です。 会社の人が作ったファイルは、コマンドの最後に必ず「:END」「EXIT」と書かれています。 ファイルのコピーなど、構文が一行で済んでいるような簡単なものでも書かれています。 これを書いても書かなくてもbatファイルの動作は同じで、コマンドプロンプトは動作しだい閉じてくれます。 このコマンドは書いてもいいし、書かなくても自動的に実行されるというような類のものなのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21354)
回答No.1

ちゃんとプログラムを勉強した人が書いたんでしょうね。 今のDOSのバッチ処理は、ENDやEXITを書かなくても、処理を終了して ファイルを閉じてくれるんですが、昔のこの手の処理は「処理終了」 と「ファイルクローズ」を明示的に指定しないと、ちゃんと動作しない ばかりか、次の処理が起動してくれなかったんですよ。 そういう時代からコードを書いていれば、最後の行に「後始末」を きっちり書いてないとなんだか気分がよくないんですね。 私、気持ちは非常によく分かります・・・。

ggenelove
質問者

お礼

ご回答ありがとうございます。 > そういう時代からコードを書いていれば、最後の行に「後始末」を > きっちり書いてないとなんだか気分がよくないんですね。 私はN88-BASICを学校で勉強したくらいですが、キッチリ書かないと気がすまない気持ちは同じです。

その他の回答 (2)

  • shakunin
  • ベストアンサー率44% (53/118)
回答No.3

構文が一行のものにも付けているところをみると、単なるこだわりでしょう。 :ENDはラベルで任意に指定するものですが、単独ではあまり意味がありませんし、EXITは自動的に実行されますから。 私なら、簡単なバッチにはコメントもなしで済ませますね。 ただ、私も「コマンドプロンプト」を終了するとき、終了ボタンクリックではなく、いちいち「EXIT」→リターンを使いますから、何となく気持ちは分かるのですが(笑)

ggenelove
質問者

お礼

ご回答ありがとうございます。 ファイルの記述の好みも様々でして、社内でもキッチリ記述したい派と、 混乱を招くので不要な記述はしない派がいます。 仕事が自分の手を離れたときに問題を起こさないために、わかりやすい記述を心がけたいものです。 そこまで行けるレベルではありませんが。

noname#99913
noname#99913
回答No.2

「:END」はラベルですね。IF分で条件判断し、GOTOでその後の処理を飛ばして強制終了させる、という手段に使えます。 おそらくそういう処理を後で付け加える予定だったのでしょう。そうでなくても、プログラムの最後を明示的に示したかったのかもしれません。 一見何の意味もなさそうなことが、実は重要な意味を持つことがあります。 プログラムを組む時の注意事項がいくつかあり、その1つに見通しのいいプログラムを組む、というのがあります。どこで何をしているのかが一目でわからないと、あとで修正するときに大変になるのです。 そのためにREM文を使って注釈を入れたり、ひとまとまりのルーチンだとわかるようにラベルを入れたりするわけです。 このあたりのことは、きちんとしたプログラム技術解説書に書いてあります。会社の人は、おそらくそういう勉強をしていたのでしょう。

ggenelove
質問者

お礼

ご回答ありがとうございます。 社内で参考にしているバッチファイルは沢山あるのですが、 大抵は他人が修正・利用する事を考えては作られてはいないようでした。 いろいろと参考にして勉強します。

関連するQ&A

  • バッチファイルを1個だけしか起動しないようにしたい

    エクスプローラー上から バッチファイル(test.bat)を ダブルクリックしてバッチファイルを実行しています。 通常はコマンドプロンプトが1個だけ表示されて、 バッチファイルが実行して実行が終了すると コマンドプロンプトも閉じられます。 しかし、時々、 コマンドプロンプトが2個表示されることがあります。 つまり、ダブルクリックが、 1回ではなく2回実行されたと誤認識されて、 同じバッチファイル(test.bat)が 2つ起動してしまったと思われます。 当然、その後の処理はおかしくなります。 (バッチファイル(test.bat)の中に 何らかのコードを追加するなどして) 必ず1個だけしか起動しないようにすることは、 できないでしょうか。 (Windows10)

  • バッチファイルについて

    @cmd /k 上記の内容で「a.bat」というファイル名で保存しました。 この保存したファイルをダブルクリックすると、バッチファイルが格納されてるフォルダのパスがコマンドプロンプト上に表示されます。 パス表示後に、いろいろな動作(「echo~」など)を実行したいと思っているんですが、うまくいきません。 どうやら一番上の「@~」を記述したものは、そのあとに「echo~」などを記述しても実行してくれないみたいです。 「@cmd /k」実行後に何か(「echo~」など)を実行するにはどうしたらいいですか?

  • バッチファイルで実行できたりできなかったり

    こんにちは。 バッチファイルとコマンドプロンプトについて、少々お伺いしたいことがあります。 まず、コマンドプロンプトで以下のコマンドを打ち込んでみたところ、すべて正常に実行することができました。 ping [example.com] > result.txt tracert [example.com] >> tr_result.txt ipconfig /all > ipc_result.txt 次に、各コマンドをテキストファイルに書き込んで、それぞれ "p_test.bat" # 内容は ping コマンド "tr_test.bat" # 内容は tracert コマンド "ipc_test.bat" # 内容は ipconfig コマンド と命名しデスクトップに配置、ダブルクリックで実行してみました。 すると、このうち正常に実行(結果をテキストファイルに出力)されたのは tr_test.bat のみでした。 ここで質問なのですが、なぜこのような違い(バッチファイルにすると実行できるものとできないものに分かれる)が起こるのでしょうか? バッチファイルの作り方やとコマンドプロンプトについて調べてみましたが、説明を見つけることが出来ませんでした。 この辺の理論について詳しい方がおりましたら、ご教示頂きたく思います。 ちなみに、OS は Windows XP SP2 です。 よろしくお願いいたします。

  • バッチファイルの記述法

    DOSKEYコマンドと、 cdコマンドを実行して、 そのまま、DOSプロンプトを閉じない、 BATファイルを作りたいのですが、 うまくいきませんでした。 どのように記述すればいいか教えてください。

  • バッチファイルについて

    バッチファイル(.bat)について不明な点が ありますので、詳しく方ご教授お願い致します。 コマンドプロンプトを開き、対象のバッチファイルを ドラッグアンドドロップし、実行すると正常通りの結果が 得られました。 ただ、バッチファイルをダブルクリックし、実行すると 実行されません。 原因を詳しい方、ご教授お願い致します。

  • バッチファイルの作成について

    分からないことが2つありますので、 質問させていただきます。 1.バッチファイルを実行するときに   他のパソコンでは出来ない環境とかはあるのか。  (例えば、ファイル削除のバッチファイルを作成したとします。   管理者権限でバッチファイルを実行したにも関わらず   消せない…なんていうことはあるのでしょうか?   以前、プログラムを書いて、自分のパソコンでは上手く動作したのですが、   他のパソコンだと上手く動作しませんでした。(ファイルの削除が上手く行かなかった)   それに対する対応策などもあれば、教えてください。) 2.バッチファイルのコマンドプロンプトが自動終了するのを防ぎたい   IEが自動で上がるのを防ぐために、コマンドプロンプトで   IE_BLOCKERを実行し、キーボードで色々入力して実行していく必要があります。   そこで、 cd C:\IE10_Blocker IE10_Blocker.cmd /B pause 上記のように書き、 batファイルとして保存しました。 しかし、pauseがきくことなく、勝手に画面は閉じてしまうし、 C:\にIE10_Blockerが無かったとしても分からなくなってしまいます。 何か改善策はあるのでしょうか? 以上、よろしくお願い致します。

  • バッチファイルがデスクトップからしか開けない

    調べてもちょっとわからないのでお聞きします。 作成したバッチファイルをデスクトップに保存した場合は開けるのに、普通のフォルダに保存して エクスプローラーから開こうとすると開けません。一瞬コマンドプロンプトの画面が出て、速攻で消えてしまい、結局実行されていません。たとえば chrome.bat(ファイル名) start chrome と保存した場合、デスクトップからはちゃんとchromeが起動するのにエクスプローラーからだとできません。 なぜでしょうか。一瞬コマンドプロンプトのウィンドウが出てすぐ消えてしまいます。 原因がわかる人がいたら回答をお願いします。

  • バッチファイルがメモ帳で開いてします

    バッチファイルがメモ帳で開くように関連付けされてしまいました。 ネットで調べて、assoc .bat=batfileをコマンド プロンプトで実行しましたが、アクセスが拒否されましたとエラーが出ます。 対処方法のお分かりの方、よろしくお願いいたします。

  • 拡張子をvbsにして実行したら構文エラー

    vbsのスクリプトをテキストに書いて、 拡張子をbatにして、bat実行したら、 ループ実行みたいに延々スクリプトが流れてしまいました。 拡張子をvbsにして実行したら構文エラーとなりました。 しかしコマンドプロンプトにスクリプトを書いて、 実行したら実行はできます。 これはvbsの実行方法はまた別にあるのでしょうか?

  • VBA バッチファイルでコピー出来ない

    以下のマクロを作りましたが、うまくいきません。 フォルダBにあるバッチファイルを実行するだけのマクロで、バッチファイルはフォルダAにあるファイルを自身のフォルダつまりフォルダBにコピーするものです。 マクロ Sub Test() Dim Str As String Str=shell(folderB\batch.bat, vbnormalfocus) End sub Batch.batの中身 Copy folderA\fileA . 注:folderAやfolderBはそれぞれのフォルダのフルパスです。 実行すると、何故かフォルダBでなくてデスクトップにコピーされます。バッチファイルをクリックして直接起動すると、目論見通りフォルダBにコピーされます。コマンドプロンプトからフォルダBに移動し、バッチファイルを起動しても、目論見通りフォルダBにコピーされます。 マクロから起動した時だけ、どうしてデスクトップにコピーされるのでしょうか?