バッチファイルの作り方

バッチファイルの作り方は簡単です。
メモ帳に半角英文字入力でコマンドプロンプトのコマンドを入力してコーディングし
「ファイル」→「名前を付けて保存」で文字コードをANSIにして後はファイル名に無理やり拡張子『.bat』まで書き込んで保存します。
例えば「ファイルを隠す.bat」で.batは必ず半角英文字です。
正常に保存されればウィンドウアイコンの中に歯車のあるアイコンが作られます。
txtで作った後強引に拡張子を書き換えても構いません。
なお、コマンドプロンプトのHELPにでるコマンドは必ずしもバッチファイルに出来る、使えるとは限らなかったはずです。
また、逆にif、forなども使えますがこれが少し難解です。
バッチファイルの終了はexit (メインルーチンの終了 Exit /b)
途中終了はgoto :EOF (サブルーチンの終了、SUBの最後の行)
(※3)
いろんなサイトで勉強するにしても基礎知識はあった方がいいので以下位は知っておいてください。
(※3ここまで)
(※2)
大事なことが抜けていました。
バッチファイルの実行はコーディングにも依りますがcdで指定しなければ対象フォルダにバッチファイルを入れてそのアイコンをクリック、又はダブルクリックすれば実行できます。
CD、cdのCはカレント、DはディレクトリでDOS時代からフォルダをディレクトリと呼びます。
CDはカレントディレクトリ
(※2ここまで)


こんな事出来ます。数行のバッチファイル集
↓↓
http://uncle-johns-room.at.webry.info/201302/article_2.html



【バッチファイルの注意】
バッチファイルには基本的にやり直しは有りませんので書き込みコマンドなどはダーミーのデータなどで充分動作を確認して実行してください。

【説明】
(※3)先ずはコマンドプロンプトで感じをつかんでください。(※3ここまで)
◆コマンドプロンプトの起動
コマンドプロンプトの起動は概ねどのOSも
「スタート」→「ファイル名を指定して実行」でポップアップを表示させ、そこの名前に「cmd」と入力して[OK]で起動します。
するとOSで少し異なりますがWindowsXpでは
C:\Documents and Settings\[ユーザーアカウント名]>_
と表示されたラインエディタのコンソールが表示されます。
これをコマンドプロンプトと呼び、DOSなどと呼ぶ人がいます。
正確にはDOSではありません。
Windows98時代は仮想DOSと呼ばれ現在のNTFSマシーン時代はコマンドプロンプトと呼ばれます。
概ねDOSのコマンドなどを引き継いでいます。

コマンドプロンプトのコンソールを閉じる。終了するにはexit[Enter]と入力するか右上の[×]クリックでコンソールを閉じます。
C:\Documents and Settings\[ユーザーアカウント名]>exit[Enter]
コマンドプロンプトは言わば対話型のコマンド実行コンソールです。
原則、半角英文字であれば大文字小文字(Aとaなど)の区別はありません。
ただし、指定するコマンドもあります。

(※4
Windows8/8.1
Windowsロゴキー[田]+[X]キー同時押下で
「コマンドプロンプト」と「コマンドプロンプト管理者」を使い分ける。

コマンド プロンプトを開きたい
↓↓(Win8/8.1)
http://qa.elecom.co.jp/faq_detail.html?id=4445=

WIndows7
管理者権限での起動は
[スタート]-[すべてのプログラム]-[アクセサリ]-[コマンドプロンプト]で右クリックで選択してください。
又はスタートメニューに cmd と入力して [Ctrl]+[Shift]+[Enter]

コマンドプロンプトを起動する方法
↓↓(Win7)
http://www.windows7faq.net/700/cat142/
※4ここまで)



◆cd(カレントディレクトリ)
少なくともcdを指定しないとWindowsXpではバッチファイル本体が存在する場所がcdになります。
cdを指定しない場合はバッチファイルを作業対象フォルダもしくはその親フォルダ等に入れます。
これはカレントディレクトリで今現在の操作対象フォルダ(ディレクトリ)と思ってください。
そして
"c:\documents and settings\<ユーザーアカウント名>\My Documents\My Pictirer"
はローカルディスク(C:)の中のdocuments and settingsフォルダの中の<ユーザーアカウント名>フォルダの中のMy Documentsフォルダの中のMy Pictirerフォルダ
と言う意味です。
これをパス名と言います。
通常は""で囲む必要は無いのですがこの場合半角スペースが存在するので念のため""で囲んであります。

注意:マイドキュメントなどの本当の?!特殊なファイルパス
ここでマイドキュメントのマイピクチャなど日本語Windowsは日本語になっているかと思いますがそれはコマンドプロンプトでは通用しません。
すくなくとも小生PCのWindowsXpでは通用しませんでした。
そこで本当のreal folder名を指定しなければなりません。
そこでWindowsXpでは以下の操作でフォルダを表示させます。
マイコンピュータを開きフォルダメニューの「ツール」→「フォルダオプション」でポップアップを表示させ「表示」タブをクリックして
□アドレスバーにファイルのパス名を表示する

ここにチェックを入れ[適用][OK]ボタンの順にクリックします。
対象のフォルダをWindows上で開いてフォルダーの上の表示でファイルの場所のパスを確認します。

(※3)コマンドプロンプトやバッチファイルでcdを今現在のフォルダの親フォルダに変更するには
cd ..
となります。
コマンドプロンプトを開いて
C:\Documents and Settings\[ユーザーアカウント名]>cd ..[Enter]
を入力してみてください。
C:\Documents and Settings\>_
となります。
(※3ここまで)



◆ワイルドカード"*"と"?"(半角文字)
ファイル名"ABCDEF.bat"などABCDEFを文字列と呼び文字列に対するヌルを含む任意の文字のワイルドカード、任意の文字指定を"*"で指定します。
ヌルと言うのは文字列長ゼロの文字列、すなわち何も存在しない文字列と言う意味です。
スペースではありません。
例えばA*と指定するとAで始まる任意の文字列です。
*Aと指定すると末尾にAにつくものに限定されます。
そして*A*と指定するとAを含むと言うような意味になります。
対象は
ABCDEF.jpgでもBCDAEF.JPGでもBCDEFA.JPGでもヒットします。
"?"は1文字単位のワイルドカードです。
この場合
??C*と指定すると第三文字がCに限定されます。
よってABCEDF.batはヒットします。
このワイルドカードは基本的に拡張子にも使えます。

(※3)コマンドプロンプトを開いて
C:\Documents and Settings\[ユーザーアカウント名]>dir A*[Enter]
を入力してみてください。
Aで始まるファイルが表示(出力)されます。
無ければ何も表示しません。(※3ここまで)



◆help(コマンドプロンプト)
この状態でさらにhelp[Enter]キーを押下します。
C:\Documents and Settings\[ユーザーアカウント名]>help[Enter]
と入力するとコマンドが表示されます。
続けて
help cd[Enter]
help attrib[Enter]
などコマンドをとけ入力するとそのコマンドの説明やコーディング書式が表示されます。
この辺は回復コンソール等にも共通し覚えておくといざという時に役に立ちます。
続けて
exit[Enter]と入力するか右上の[×]クリックでコンソールを閉じます。
コマンドプロンプトは言わば対話型のコマンド実行コンソールです。
原則、半角英文字であれば大文字小文字(Aとaなど)の区別はありません。
ただし、指定するコマンドもあります。

特殊なコマンドのヘルプ
エラーチェック、チェックディスクのchkdskなどが有名ですが「cmd」等には含まれていないコマンドプロンプトのコマンドラインで実行できるプログラムがあります。C言語などで比較的簡単に作れるコマンドでもありますがそれらのMS提供のコマンドのヘルプは

<コマンド> /?[Enter]
chkdsk /?[Enter]

でヘルプを表示します。
chkdskはOSによって随分変わってきています。



◆基本的なバッチファイルのデバッグに便利なコマンド他
バッチファイルのデバッグに役立つ方法は

(※5
①echo on/offの切り替え
 作成時はecho onで処理確認、トレースしながら実行し完成後、echo offやecho omを削除します。
②旧コーディングなどrem化で保存
 エラー発生時など発生業を一旦rem化して無効にし、こうだと思うコーディングを追加するとどこが間違っていた等が理解できます。
③pause で一旦中断、再スタート
 ちょっと結果確認したい行の後に追加します。「echo パラメータ」で文字列を画面に出した後、pause等を入れます。
④[Ctrl]+[s]で一旦バッチの実行を一旦中断
 実行を止めたくないが、画面が流れて上手くいっているのか分からない時、[Ctrl]+[s]キーの同時押下で継続可能な中断が可能です。何かのキーを押すことで継続スタートします。[Ctrl]+[s]は事項で説明
※5 ここまで)

冒頭に「echo on」を入れる→行単位で処理を表示する。
完成したら削除、または「echo off」又はremを付加する
適当な行に「pause」を入れキー入力が求められる。一時中断してエラーメッセージなどを確認する。
rem化してコマンドをコメント行にして一時的にその行の処理を凍結する。
等です。

デバッグ中の例
======
echo on
c:
cd "c:\Documents and Settings\<ユーザーアカウント名>\My Documents\My Pictirer"
echo ファイルを隠し属性に変更する
pause
attrib +h *秘密*.jp* /s
attrib +h *秘密*.bmp /s
echo ファイルを隠し属性に変更しました。
pause
rem attrib -h *秘密*.jp* /s
rem attrib -h *秘密*.bmp /s
exit
===ここまで12行===

上記例はファイル名に秘密が付いている拡張子JPG、JPEGファイル(JPで始まる拡張子ファイル)やBMPファイルに隠し属性を付加するプログラムのデバッグ例です。





(※5
◆バッチ処理の中断と続けて再スタート
echo on時など処理の状態を確認したいことがありますが、中止もしたくない時
[CTRL]+[S]の同時押下で一旦中断できます。再スタートは特殊キー以外を入力するとその続きを実行します。
通常はスペースキーでも押下すればOKです。
意外と時間が掛かる時、中断はしたくないがデバッグが上手くいっているのか確認する場合に便利です。
場合によっては受け付けません。(forの一行の実行中とか、)
※5 ここまで)




◆コマンドプロンプトのコーディングミス
C:\>dir x:[Enter]
指定されたパスが見つかりません。
のエラー…
こういう時は[F1]キ―もしくは[F3]キ―
[F1]キ―を4回押下し、「C」を押下後、[F1]キ―押下


◆ドライブを変更する。
ドライブやパーティション、USBメモリに変更するには
[ドライブレター]:[Enter]
となります。
USBメモリはドライブレターが固定ではないのでバッチファイルでは注意が必要です。
C:\Documents...>d:[Enter]
D:\>



◆リダイレクト機能など知っておいた方が便利です。
コマンドプロンプトでtestフォルダなどで
C:\Documents...>d:[Enter]
D:\>
D:\>dir > filelist.csv[Enter]
D:\>dir > filelist.txt[Enter]
D:\>echo test text > testtext.txt[Enter]
等にすると画面の代わりにコマンドの結果をエクセルで読めるCSVデータやメモ帳データに出力されます。

バッチファイルでは一部のコーディングは2つ文字をつづける必要がある場合があります。
">"、"<"はコマンドプロンプトのリダイレクト機能でバッチファイルでは">>"で使う場合があります。
他に"%"など"%%"になったりします。

(※1ここから)【重要】
setコマンドがありますがコマンドプロンプトで下手に使うとWindowsの環境変数を変えてしまう事があり得ます。
コマンドプロンプトで
C:\任意>set[Enter]
と入力すると長々表示されますがこれがWindowsの環境変数の一覧でこの内容を変更するとWindowsの動作が保証できません。
よって、ここに表示される変数はバッチ上で変数としては使わないようにしてください。
(※1ここまで)


(※3)
◆仕切り記号『\』について
DOS時代から
C:\Program files\…
など円記号『\』が使われています。
実はこれは日本向けの仕様です。
本来は米国ではバックスラッシュ(\)の半角文字でASCIIコードのデータ値は『\』と同じです。
要するに画面上は日本語向けWindowsでは\となっていると言う事を基礎知識として覚えておいてください。

以上の事を基礎知識で理解して詳細は以下のサイトを参考に!!




(※6)
【補足】
◆「コマンド拡張機能を有効にする」とは
ヘルプを見ると「コマンド拡張機能を有効にする」という言葉が出てくる場合があります。
基本的に覚えることはデフォルト(初期値)で有効になっているという事だけ覚えておきましょう。
詳しくは以下

コマンドプロンプトのコマンド拡張機能はデフォルトで有効になっている
http://sprint-life.hatenablog.com/entry/2014/08/22/094013




【おまけ】

繰り返し処理
↓↓
http://fdays.blogspot.jp/2007/12/blog-post_06.html

変数処理の資料
↓↓
http://win-cmd.seesaa.net/article/82133676.html




【コマンドプロンプト紹介サイト】

MS-DOSコマンド一覧表
↓↓
http://www.geocities.co.jp/SiliconValley-PaloAlto/2099/ms-dos.html
(注意:仮想DOS位までは厳密に一致)

コマンドプロンプトを使ってみよう!
↓↓
http://ykr414.com/dos/

コマンドプロンプトを使いこなそう!【←慣れた人にはお薦め】
↓↓
http://win-cmd.seesaa.net/

初めてのコマンドプロンプト
↓↓
http://www5f.biglobe.ne.jp/~ayum/command/command.html

コマンドプロンプト
↓↓
http://www.confrage.com/dos/

バッチファイル内での特殊文字のエスケープについて。
↓↓
http://0xc000013a.blog96.fc2.com/blog-entry-78.html

コマンドプロンプトを使う
↓↓
http://wiki.livedoor.jp/niloufar/d/%A5%B3%A5%DE%A5%F3%A5%C9%A5%D7%A5%ED%A5%F3%A5%D7%A5%C8%A4%F2%BB%C8%A4%A6

(※3ここまで)


(※1)2013/04/04 setコマンドの注意
(※2)2013/04/07 バッチファイルの起動
(※3)2013/04/08 全体の見直し順序入れ替え、仕切り記号について、コマンドプロンプト、バッチ関係のリンク追加
2013/04/21 若干の訂正
2013/06/29 若干の訂正
(※4)2015/02/23 Windows8コマンドプロンプト起動方法追加
(※5)2018/02/23 バッチ処理の中断と続けて再スタート
(※6)2018/03/22 「コマンド拡張機能を有効にする」とは

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 5

なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)

この記事へのコメント

この記事へのトラックバック