Windows
コマンドプロンプト
batch
バッチファイル

必要に迫られてバッチファイルを組むことになった人向けのTips

More than 1 year has passed since last update.

 バッチファイルが何かも知らないのに、職場や自宅などで組まざるを得なくなった人向けの手引き書です

1.バッチファイルとは?

 バッチファイルとは、windows環境下で動作するバッチ処理(複数の処理をまとめて順次実行する処理のこと)を記述するファイルのこと。
 分かりやすく言うと、たくさんの処理を自動で実行してくれるファイル
 MS-DOSがどうたらとかいうのは、知る必要は別にないので割愛します。

2.何ができるの

 バッチファイルでは、マウスを使わない処理なら大体なんでもできます。
 ただし、cmd.exe(コマンドプロンプト)で動作するので、画像ファイルをぬるぬる動かしたりとかはできません、あくまでプロンプト上で完結するものに限ります。

3.どうやって書くの

 プログラミング言語は大まかに2種類に分けられます。
・コンパイル言語…人間語で書いたものを機械語に訳すやつ。Cとか
・スクリプト言語…書いた処理を1行ずつ読んでいくやつ。RubyとかPythonとか
 バッチファイルは後者、スクリプト言語に属します。もっとも、言語というよりも
ただの処理の羅列なのですが。分類するならこちらということで。

 何が言いたいのかというと、バッチファイルには、自分のしたい処理を上から1行ずつ書いていけばいい、と。そういうことです。

4.何に書けばいいの

 先述したスクリプト言語のいいところは、コンパイル言語に必要な翻訳の過程がいらないことです。
 つまり、適当なものにパッと書いてパッと実行できるんですね。(多少の語弊はあります)
 バッチファイルを実行するのはcmd.exeだといいました。実行させるバッチファイルの拡張子は.bat。必要なエディタはなんとメモ帳です。

5.書くぞー。

 メモ帳を開きましょう。メモ帳の場所がわからない方は、「アクセサリ→メモ帳」か、「PC内のアプリを検索→notepad」のどちらかで大体いけるはずです。windowsなら、入っていないということは無いです。

 さて、ひとまず次の文章を入力してみましょう。

notepad

 文章ですらない単語ですが。入力したら、「保存→(好きな名前.bat)に名前を変更」と行ってください。保存する場所は何処でもいいです。
 保存場所、ここでは仮にデスクトップ上としましょうか、に歯車が書かれたアイコンがあれば、成功です。普通のメモ帳方は、恐らく「名前.bat.txt」になってるので、「名前を付けて保存→ファイルの種類をすべてのファイルにする」とやって保存しなおしてください。

6.開いてみる

 では、歯車のアイコンをダブルクリックしてみましょう。すると、なんと新規のメモ帳が起動したではありませんか。

 といった感じで、バッチファイルをワンタッチでメモ帳が開けられました。これだけだと普通にメモ帳のアイコンをクリックするのと変わりませんが、バッチファイルではほかにもいろんなことができます。

7.使いそうな処理のコピペ用置き場

 ここを見ている方は基本的にコピペでも組めれば問題ないという方が多いと思いますので、使いそうな処理をコピペできるようにしておきます。
 もし自分で細かく組みたいな、と思った方は、筆者のマイページ右側にある「人気の投稿」を上から見ていくことをお勧めします。もっと詳しく、頻出コマンドをどう扱うのかが書いてあります。

処理を途中でポーズする(画面に出た文字を読ませたい場合など)
pause
もしくは
pause >nul

上のほうでは、「続行するには何かキーを押してください」と表示されます
下のほうでは何も表示されません
現在の日付を8桁(yyyymmdd)で表示
for /f "tokens=1-3 delims=/" %%a in ("%date%") do echo %%a%%b%%c
現在の日付(yyyymmdd)の名前のフォルダを作成
for /f "tokens=1-3 delims=/" %%a in ("%date%") do mkdir %userprofile%\desktop\%%a%%b%%c

デスクトップ上に作成する例です。
別のところに作る場合は、「%userprofile%\desktop\」の部分を好きなパスに変えてください。
現在の日付(yyyymmdd_hhmmssss)の名前のフォルダを作成
for /f "tokens=1-7 delims=/:." %%a in ("%date%:%time%") do set /a m=%%a%%b%%c,n=%%d+100,o=1%%e%%f%%g
mkdir %userprofile%\desktop\%m%_%n:~-2%%o:~-6%

上と同じく、デスクトップに作成する例です。
現在の日付(yyyymmdd)の名前のtxtファイルを作成
for /f "tokens=1-3 delims=/" %%a in ("%date%") do echo あああああ>%userprofile%\desktop\%%a%%b%%c.txt

上と同じく、デスクトップに作成する例です。
テキストファイルの中身には、「あああああ」と入力されるようになっています。
現在の日付(yyyymmdd_hhmmssss)の名前のtxtファイルを作成
for /f "tokens=1-7 delims=/:." %%a in ("%date%:%time%") do set /a m=%%a%%b%%c,n=%%d+100,o=1%%e%%f%%g
echo あああああ>%userprofile%\desktop\%m%_%n:~-2%%o:~-6%.txt

上と同じく、デスクトップに作成する例です。
テキストファイルの中身には、「あああああ」と入力されるようになっています。
txtファイルに複数行の文字列を記入する場合
echo %date%>hogehoge.txt
echo %time%>>hogehoge.txt

>ひとつだと上書き、ふたつだと追記になります。
ちなみに%date%は現在の日付、%time%は現在の時間を表します。

 貧弱な想像力ではほかに思いつかなかったので、先述の通り筆者のマイページをご覧になるか、「こういうの組んで」というご希望がありましたらコメントいただければわかる範囲で書きます。ネットワーク系は環境が異なるため厳しいですが。

 では。誤字脱字や不足などありました場合も、お気軽にコメントいただければ幸いです。