PC-More

PCの便利化、Windowsのフリーソフトや、カスタマイズ方法の紹介。

バッチファイルで処理を自動化する

バッチファイルとは、行う処理を書いた、単純なテキストファイルです。

例えば、以下のような事が出来ます。

  • ファイルやフォルダを、作成削除名前の変更をする
  • ソフトをまとめて起動、又は、順次起動する
  • 他のプログラムと組み合わせて動画、画像、音声などを編集する

目次

簡単なバッチファイルを作る

まずは、簡単なバッチファイルを作ってみましょう。

作成

メモ帳等のテキストエディタを起動し、以下のサンプルをコピー&ペーストするか、手打ちしてください。

手打ちする場合は、基本的に構文に使うアルファベットや記号は半角で記述してください。

@echo off

rem ■ メモ帳を起動する
start "" "C:\Windows\notepad.exe"

rem ■ 2秒待つ
ping localhost -n 3 >NUL:

rem ■ 電卓を起動する
start "" "C:\Windows\System32\calc.exe"

rem ■ 完了メッセージを表示する
echo.処理を完了しました。

pause

解説

@echo off」は表示をシンプルにする為のものです。

rem 」から始まる行は、コメント行で意味を持ちません。説明等を記述します。

pause」は、処理を一時停止させるものです。

その他の処理は、コメントに書かれている通りです。

保存

メモ帳の場合は、
上部メニューの「ファイル」をクリックし、
名前を付けて保存」をクリックし、
左の欄で場所を選択し、
末尾が「.bat」(半角)の任意の名前(「テスト.bat」等)を付け、
Enterキーを押すか、「保存」をクリックします。

実行

保存した場所を開き、保存したバッチファイルをダブルクリックして実行します。

黒いウィンドウが表示され、コメント通りの処理が実行されれば成功です。

Enterキーを押すか、ウィンドウを閉じると終了します。

編集

保存したバッチファイルを編集するには、そのバッチファイルを右クリックし、「編集」をクリックします。

バッチファイルの基本

バッチファイルを作成する上での基本についてです。

構文

バッチファイルの記述についてです。

行の最初には、「コマンド」か「実行したいもの」を記述します。

続けて、半角スペースで区切り、「引数」(パラメータ)や「オプション」と呼ばれるものを書き込みます。

コマンド」とは、命令のようなものです。

引数やオプション」とは、その設定のようなものです。

以下のようなイメージです。

コマンド 引数1 引数2 引数3 ・・・
 ↓
命令 設定1 設定2 設定3 ・・・

例えば、フォルダを作成する「md」というコマンドがあります。

md "新しいフォルダ"」という記述の場合、以下のような意味になります。

md "新しいフォルダ"
 ↓
フォルダを作れ 「新しいフォルダ」という名前の

又、バッチファイルにおいて、一部の半角記号全角スペースは特殊な意味を持ちますので、それらを使う場合は、「"」で前後を囲みます。そうすると意味はなくなり、ただの文字として認識されます。

以下は、「AAA BBB」という名前のフォルダを作成する例です。半角スペースが含まれています。

半角スペースで区切られてしまわないように、「"」で囲んでいます。

md "AAA BBB"

区切りとして認識される文字」は、「半角スペース」「全角スペース」と、半角の「;」「,」「=」です。

特殊な意味を持つ文字」は、半角の「"」「<」「>」「%」「&」「|」「^」等です。

ただ、「%」は特別で、「"」で囲んでも特殊な意味を持ち続けます。

対処法として、ファイル名やフォルダ名に「%」を使いたい場合は、「%%」と記述します。これで1個の「%」を表します。

つまり、「100%」という名前のフォルダを作成したい場合は、「md "100%%"」と記述します。

又、「"」で囲んでいない状態で「特殊な意味を持つ文字」の意味をなくすには、その文字の直前に「^」を記述します。

つまり、「AAA&BBB」という名前のフォルダを作成したい場合は、「md AAA^&BBB」と記述します。

ただし、先述の通り、「%」だけは、「^」を使うのではなく、「%%」と記述します。

基本的に、半角記号を文字として使う場合は、「"」で囲んでおくと良いかと思います。

コマンドプロンプト

バッチファイルは、「コマンドプロンプト」と呼ばれるプログラム上で実行されます。

バッチファイルを実行すると、そのバッチファイルがコマンドプロンプトで実行されますが、コマンドプロンプトを単体で実行したい場合は、スタートメニューの中の、「Windows システム ツール」や「アクセサリ」の中の、「コマンドプロンプト」を実行します。

又、Windowsロゴのキーを押しながら「R」キーを押し、出た小窓に「cmd」と打ち込んで、Enterキーを押しても起動出来ます。

コマンドプロンプトは、真っ黒なウィンドウで、左には現在作業しているフォルダ(カレントディレクトリ)が表示されています。このフォルダを起点に作業します。
画像

末尾の「>」は、ユーザーからの入力待ちである事表しています。

例えば、「dir」と打ち込んでEnterキーを押すと、カレントディレクトリの情報が表示されます。

カレントディレクトリとは

バッチファイルやプログラムには、「カレントディレクトリ」という概念が存在します。

これは、人間が物理的なフォルダを開いているのと同じで、「現在開いて作業しているフォルダ(場所)」という意味です。

バッチファイルを普通に起動した場合は、バッチファイルがあるフォルダがカレントディレクトリとなります。

バッチファイルに対し、何かのファイルやフォルダをドラッグ&ドロップした場合(ファイル等をバッチファイルのアイコン上にクリックしたまま持ってきて離した場合)は、カレントディレクトリがバッチファイルのある場所ではなくなるので、注意が必要です。

半角記号の意味

バッチファイルにおける半角記号の意味です。

全てを完璧に覚える必要はないですが、大まかに把握しておくと良いかと思います。

<」=この文字の、右側に書いたファイルの内容を、左側に書いたコマンドへキー入力として送る(リダイレクト)

>」=この文字の、左側に書いたコマンドの実行結果を、右側に書いたファイルへと書き出す(リダイレクト)

"」=囲んだ部分を一塊の文字列として扱う

%」=変数を使用する際に使う

&」=改行したのと同じ意味

( )」=forやifコマンドを使う場合に、行う処理等を一塊として囲む(ブロック、グループ化)

|」=この文字の、前にあるコマンドの実行結果(画面に表示される文字)を、後にあるコマンドに入力データとして渡す(パイプ)

^」=この文字の、直後の記号の意味を無くし、文字として認識させる。(エスケープ)

ファイルやフォルダの場所について

ファイルやフォルダの「場所」(アドレス)は、「パス」(Path)と呼びます。

「C:\111\222\AAA.txt」のように、「\」区切りで表現します。

上記の意味は、「C:」ドライブ内の、「111」フォルダ内の、「222」フォルダ内の、「AAA.txt」ファイルという意味です。

C:\111\222\AAA.txt」のように、
ドライブから始まるパスを「絶対パス」や「フルパス」と呼びます。

AAA.txt」のように、
名前だけ、又は、ドライブから始まっていないパスを「相対パス」と呼びます。
カレントディレクトリ(作業中の場所)から見ての相対という意味です。

又、バッチファイルにおいて、
.\」は、「カレントディレクトリ」を表し、
..\」は、「1つ上の階層(フォルダ)」を表し、
..\..\」は、「2つ上の階層」を表します。

例えば、
C:\AAA」フォルダと、
C:\BBB」フォルダがあり、

C:\AAA」がカレントディレクトリだった場合、

C:\AAA」から見た「C:\BBB」フォルダは、
1つ上の階層にある、『BBB』フォルダ」ですから、
..\BBB」と記述します。

サンプル

以下はバッチファイルのサンプルです。

手打ちするか、コピー&ペーストして、必要な部分は書き換えて実行してみてください。

コメントを書き込む

rem」を使って、コメントを書き込みます。

コメントとは、処理には影響を与えないメモのようなものです。

以下が例です。

@echo off

rem ■ フォルダの作成
md "新しいフォルダ"

pause

画面に文字を表示する

バッチファイル(コマンドプロンプト)の画面に文字を表示するには、「echo」コマンドを使います。

以下は、「表示したい文字」と2回表示する例です。

@echo off

echo 表示したい文字

echo.表示したい文字

pause

echo」の後には、半角スペースか、「.」(半角ドット)を入れます。

半角スペースだと正しく表示されないケースもありますし、「.」(半角ドット)だと正しく表示されないケースもありますので、ケースに合わせて使い分けると良いかと思います。

プログラムの順次起動

メモ帳」を起動し、それが終了したら、次に「電卓」を起動する例です。

"C:\Windows\System32\notepad.exe"
"C:\Windows\System32\calc.exe"

ファイルのパス(場所)を書いて、半角の「"」で前後を囲むだけです。

ケースによっては、ファイル名だけで良かったり、「"」は不要な場合もあります。

ファイルのフルパス(完全な場所)の取得方法は、最近のWindowsの場合は、目的のファイルを「Shift」キーを押しながら右クリックし、「パスのコピー」や「パスとしてコピー」等をクリックすると取得出来ます。

又は、フォルダ上部にある場所が書かれたアドレスバー内を右クリックし、「アドレスをテキストとしてコピー」をクリックしても良いです。

後は、テキストエディタで、そのフルパスを書き込みたい場所をクリックし、「Ctrl」キーを押しながら「V」キーを押すと貼り付けられます。又は、右クリックして「貼り付け」をクリックしても良いです。

プログラムの一括起動

「メモ帳」と「電卓」を一括で起動する例です。

start "" "C:\Windows\System32\notepad.exe"
start "" "C:\Windows\System32\calc.exe"

行頭に「start "" 」を書き、その後にファイルのパスを書きます。

最初の「""」内にはウィンドウタイトルを書きますが、今回はこれを指定しない為、空の「""」となっています。

プログラムを時間を空けて実行する

「メモ帳」と「電卓」を時間を空けて実行する例です。

@echo off
start "" "C:\Windows\System32\notepad.exe"
ping localhost -n 4 >NUL:
start "" "C:\Windows\System32\calc.exe"

ここでは「ping」というコマンドを利用して「3秒」待つ処理を実現しています。

本来はネットワーク関係のコマンドなので、「1」足して「4」と記述する必要があります。

古いWindowsでも対応出来るように「ping」コマンドでの例を書きましたが、少なくともWindows10であれば「sleep 3」と書けば「3秒」待つ処理が実現できます。

プログラムに引数を付けて実行する

Internet Explorerを、引数付きで実行します。

引数」とは、実行対象に渡すデータの事です。

内容は、設定だったり、ファイルのパス(場所)だったり、追加のオプションだったり、様々です。

今回はURLを付けて、Internet ExplorerでそのURLを開くように指定します。

start "" "iexplore.exe" "https://ja.wikipedia.org/"

ファイルやURLは、「"」で囲まなくても良い場合もありますが、囲んでおいた方が無難です。

URLに「%」が含まれる場合は、「%%」に書き換えて記述してください。

ファイルのコピー

C:\xxx\コピー元.txt」ファイルを、「C:\xxx\コピー先.txt」へコピーする例です。

copy /b "C:\xxx\コピー元.txt" "C:\xxx\コピー先.txt"

copy」は、コピー用のコマンドです。

/b」は、内容を変更せずそのままコピーするオプション(設定)です。

上記はフルパス(完全な場所)で記述していますが、バッチファイルと同じ場所にあるファイルなら、基本的にはファイル名だけで良いです。

フォルダのコピー

C:\xxx\コピー元フォルダ」ファイルを、「C:\xxx\コピー先フォルダ」へコピーする例です。

xcopy /E /I /H /Y "C:\xxx\コピー元フォルダ" "C:\xxx\コピー先フォルダ"

xcopy」は、フォルダごとコピーするコマンドです。

/E」は、空のフォルダもコピーするオプションです。

/I」は、コピー先フォルダが無ければ作成するオプションです。

/H」は、隠しファイルやシステムファイルもコピーするオプションです。

/Y」は、既存ファイルの上書きの確認を行わないオプションです。

ファイルの作成

あああ」という内容を、「AAA.txt」という名前のファイルに書き出す例です。既存のファイルは上書きされますのでご注意ください。

echo.あああ> "AAA.txt"

echo」は、それに続く文字を画面に出力するコマンドです。

>」は「リダイレクト」と呼ばれ、左側のコマンドの結果を、右側で指定したファイルに書き出すものです。

つまり、今回は、「echo.あああ」の実行結果である「あああ」をファイルへ書き出しています。

ただし、バッチファイルにおいて一部の半角記号全角スペースは特殊な意味持ちますので、それらを使う場合は、「"」で囲んで「"あああ"」のように記述した方が無難ですが、その場合は「"」も出力されます。

ファイルに追記する

あああ」という内容を、「AAA.txt」という名前のファイルに追記する例です。

echo.あああ>> "AAA.txt"

>>」は、左側のコマンドの実行結果(画面に表示される文字)を、右側で指定したファイルに追記するものです。

上記の例で言えば、「echo.あああ」は、画面に「あああ」と表示する処理ですから、その文字がファイルに保存されます。

改行が挿入されますので、このバッチファイルを3回繰り返し行うと、以下のようなテキストファイルになります。

あああ
あああ
あああ

空のファイルを作成する

空のファイル「AAA.txt」を作成する例です。

copy nul "AAA.txt"

nul」はWindowsが用意した空ファイルです。それを「copy」コマンドでコピーしています。

ファイルを移動する

C:\AAA\111.txt」ファイルを、「C:\BBB」フォルダ内へ移動する例です。

move "C:\AAA\111.txt" "C:\BBB"

move」は、移動用のコマンドです。

以下は、「C:\AAA」フォルダ内の「〜.txt」という名前のファイルを、「C:\BBB」フォルダ内へ移動する例です。

move "C:\AAA\*.txt" "C:\BBB"

*」は、ワイルドカードと言って、日本語で言えば「」や「なんとか」というような意味です。

ファイルの削除

C:\xxx\削除対象.txt」ファイルを削除する例です。

del /q "C:\xxx\削除対象.txt"

/q」は、削除しても良いかをユーザーに確認せずに削除するオプションです。

以下は、「C:\xxx」フォルダ内の、サブフォルダ(そのフォルダ内にあるフォルダ)内も含めて、全ての「〜.log」ファイルを削除する例です。

del /q /s "C:\xxx\*.log"

/s」は、サブフォルダも含めるオプションです。

*.log」は、「〜.log」ファイルという意味です。

フォルダの削除

C:\AAA\BBB」フォルダを削除する例です。

rd /q "C:\AAA\BBB"

/q」は、削除の確認をしないオプションです。

ただし、上記では、ファイルが入っていると削除できません。

ファイルごと削除する為には、「/s」オプションも付けます。

rd /q /s "C:\AAA\BBB"

フォルダの指定は間違わないようにご注意ください

カレントディレクトリの変更

カレントディレクトリを変更するには、「pushd」か「cd」コマンドを使います。

以下は、「pushd」コマンドで、カレントディレクトリを「C:\AAA\BBB」フォルダに変更する例です。

pushd "C:\AAA\BBB"

又、「pushd」コマンドで変更されたカレントディレクトリを元の場所に戻す場合は、「popd」と記述すると戻ります。

以下は「cd」コマンドを使った例です。

cd /d "C:\AAA\BBB"

/d」は、異なるドライブでもカレントディレクトリを変更するオプションです。例えば、「E:\111」フォルダ等です。

バッチファイル内で、別のバッチファイルを実行する

バッチファイル内で、同じ場所にある「002.bat」を呼び出して実行する例です。

call "002.bat"

イコールではないですが、記述した箇所に「002.bat」の内容が入るようなイメージです。

全く違う場所にあるバッチファイルを実行する場合は、フルパス(絶対パス)
C:\AAA\002.bat」のような感じで記述してください。

プログラムを終了させる

以下は、「taskkill」コマンドを使って、メモ帳(notepad.exe)を終了させる例です。

taskkill /im "notepad.exe"

/im」は、イメージ名を指定するオプションです。

強制終了させる場合は、「/f」オプションを付けます。

ただ、「/im "notepad.exe"」の間には入れないでください。

以下のようにします。

taskkill /im "notepad.exe" /f

変数を代入する

変数」とは、文字を入れる入れ物です。

変数に、文字を入れる事を「代入」と呼びます。

代入するには、「set」コマンドを使います。

書式は以下の通りです。

set "変数の名前=入れる文字"

以下は、変数「AAA」に、「111」を代入する例です。

set "AAA=111"

以下は、変数「AAA」に、「"111"」(「"」付き)を代入する例です。

set AAA="111"

変数を使用するには、変数名を「%」で囲んで使います。

「set "AAA=111"」を実行し、
変数「AAA」に、「111」が代入されている状態の場合、
%AAA%」は、「111」となります。

つまり、
「set "AAA=111"」を実行した後に、
「md "%AAA%"」を実行すると、
「md "111"」を実行したのと同じとなり、
111」というフォルダが作成されます。

又、以下のような、指定ファイルにテキストを出力するバッチファイルがあったとします。

echo.001>> "C:\AAA\xxx.log"
echo.002>> "C:\AAA\xxx.log"
echo.003>> "C:\AAA\xxx.log"

上記では、「C:\AAA\xxx.log」が重複してますので、以下のようにする事も出来ます。

set "出力ファイル=C:\AAA\xxx.log"

echo.001>> "%出力ファイル%"
echo.002>> "%出力ファイル%"
echo.003>> "%出力ファイル%"

上記のようにしますと、出力ファイルのパス(場所)を変更したくなった時に、変数の値を書き換えるだけで済みます。

又、バッチファイル実行中に、ユーザーが変数の値を入力するようにも出来ます。

set」コマンドに、「/p」オプションを付けます。

以下のような書式です。

set /p "変数名=表示するメッセージ"

変数「AAA」の値をユーザーに尋ねる例は、以下の通りです。

@echo off

set /p "AAA=「AAA」の値を入力し、Enterキーを押してください。"

echo."%AAA%"が入力されました。

pause

又、注意点として、「del」コマンドの対象に変数を使う場合は、
del /q /s "%削除するフォルダ%"」と記述して、
変数「削除するフォルダ」が、何らかの理由で空だった(代入出来なかった)場合、
del /q /s ""」を実行したのと同じになり、
カレントディレクトリ内の(サブフォルダ内も含む)全てのファイルが削除されてしまいます

これは、バッチファイルを複数に分けていて、サブのバッチファイルを間違えて単体で起動してしまった場合等に起こります。

del /q /s」と変数を一緒に使う場合は、変数が空にならないようにご注意ください。

メッセージボックスを表示する

VBScript」と呼ばれる、Windows標準のスクリプト言語を、バッチファイルから利用して、メッセージボックスを表示する例です。

スクリプト」とは、処理が掛かれたテキストファイルの事です。

echo.msgbox "メッセージ内容",vbInformation,"ウィンドウタイトル"> "%TEMP%\Message.vbs"

start "" "%TEMP%\Message.vbs"

echo.」と「>」の間にある部分がスクリプトで、それを「%TEMP%\Message.vbs」ファイルに書き出しています。

%TEMP%」は、一時的なファイルやフォルダを作成する為にWindowsによって予め用意されているフォルダです。

その後の「start "" "%TEMP%\Message.vbs"」で、作成したスクリプトを実行し、メッセージボックスを表示しています。

メッセージを表示するスクリプトを作成し、すぐに実行している訳です。

又、「vbInformation」の部分を変更する事で、表示するウィンドウの種類を変更出来ます。

  • vbInformation」=情報
  • vbCritical」=警告
  • vbExclamation」=注意
  • vbQuestion」=問い合わせ

又、タイミング的に、「Message.vbs」が表示される前に、次の「Message.vbs」が出力されてしまうと、上書きされて内容が変わってしましますので、この処理を短い間隔で複数回使う場合は、出力ファイル名を別にしてください。

ドラッグ&ドロップで処理する

処理したいファイルやフォルダを、バッチファイルのアイコン上にドラッグ&ドロップ(クリックしたまま移動させて離す)すると、そのファイルやフォルダのパス(場所)を、バッチファイルから参照出来るようになります。

つまり、バッチファイルでそのファイルを処理出来るようになります
画像
画像

これは、「C:\xxx\バッチ.bat C:\xxx\テキスト.txt」のように実行したのと同じ形になります。

C:\xxx\バッチ.bat」に、「C:\xxx\テキスト.txt」を引数1として渡し、実行しています。

以下は、ドラッグ&ドロップされたファイル(引数1)のフルパス(完全な場所)を表示する例です。

@echo off

echo."%~1"

pause

%1」は、「引数1」を表します。つまり、ドラッグ&ドロップされた「C:\xxx\テキスト.txt」です。

%~1」は、「引数1」から「"」を取り除いたものです。

つまり、「"%~1"」は、引数1に「"」が付いている場合は取り除き、再度「"」で囲み直しています。

""C:\xxx\テキスト.txt""」と二重になってしまうのを防ぐ為です。

又、以下のような記述方法も出来ます。

  • 「%~d1」=対象のドライブ部分
  • 「%~p1」=対象がある場所(ドライブ部分を除く。末尾は「\」。)
  • 「%~n1」=対象の名前部分(「.」と拡張子を除く)
  • 「%~x1」=対象の拡張子部分(「.」を含む)

又、以下のように組み合わせる事も出来ます。

  • 「%~dp1」=対象がある場所(末尾は「\」)
  • 「%~nx1」=対象の名前(「.」と拡張子を含む)
  • 「%~dpnx1」=対象のフルパス(完全な場所)

又、ファイルサイズ、日時、属性も取得出来ます。

  • 「%~z1」=対象のファイルサイズ
  • 「%~t1」=対象の更新日時
  • 「%~a1」=対象の属性

又、引数2は、「%2」となります。

%0」は、バッチファイル自体のフルパスが代入されています。

又、ドラッグ&ドロップした場合の注意点は、カレントディレクトリ(現在作業しているフォルダ)が、バッチファイルと同じ場所ではなくなる事です。

バッチファイルと同じ場所にあるファイルを、「テキスト.txt」のような感じで指定は出来ません。

C:\xxx\テキスト.txt」のような感じで、フルパスで書く必要があります。

バッチファイルがある場所をカレントディレクトリにしたい場合は、バッチファイルの最初の方に以下を記述します。

pushd "%~dp0"

pushd」は、カレントディレクトリを変更するコマンドです。

%~dp0」は、バッチファイルがある場所(末尾は「\」)を表します。

日時を使う

変数の「date」と「time」を使って、現在日時を利用する例です。

以下は、画面に日時を表示する例です。

@echo off

echo.日付は「%date%」です。

echo.時刻は「%time%」です。

pause

結果は、以下のような感じになります。

日付は「2018/01/23」です。

時刻は「12:30:11.22」です。

変数の一部を使う

「%変数名:~開始箇所,終了箇所%」という書式を使います。

以下は、変数「date」内の、「」に当たる部分だけ使う例です。

例えば、今日の日付が「2018/01/23」だったとします。

「%date%」と記述すると、「2018/01/23」となります。

「%date:~0,4%」と記述すると、「頭から数えて、0文字目から、4文字」となり、「2018」となります。

「%date:~-10,4%」と記述すると、「-」が付いていますから、「末尾から数えて、10文字目から、4文字」となり、「2018」となります。

変数内を置換する

「%変数名:置換前の文字=置換後の文字%」という書式を使います。

例えば、今日の日付が「2018/01/23」だったとします。

「%date:/=-%」と記述すると、「/」が「-」に置換され、「2018-01-23」となります。

「%date:/=%」と記述すると、「/」が無くなり、「20180123」となります。

こうすると、変数「date」「time」がファイル名等にも使えて便利です。

フォルダ内のファイルを処理する

フォルダ内の複数のファイル同様の処理を行いたい場合は、「for文」を使います。

書式は以下の通りです。

for %%代入先アルファベット   in (対象ファイル)   do (
行う処理 %%代入先アルファベット
)

真ん中にある「in 〜」部分は、処理の対象を指定しています。ここから対象を1つずつ取り出して処理します

最初にある「for 〜」部分は、「in」で取り出した1つのデータを格納する(代入する)アルファベット1文字を書きます。又、その他オプションを書き込む場合もあります。

最後にある「do 〜」部分は、実行する処理です。「for」で代入されたデータを、「%%アルファベット」という形式で使用する事が出来ます。「%%l」のような感じです。

do」部分で、複数の処理を書く場合は、例文のように、「 ( ) 」内に改行を入れて書きます。

処理が1つのみの場合は、そのまま続けて処理を書いて構いません。例えば、
for%%l   in ("C:\xxx\*.txt")   do echo %%l
という感じです。

上記の例では、分かりやすいように半角スペースを多めに入れていますが、通常は1つで構いません。

又、上記の例では、サブフォルダ(そのフォルダ内のフォルダ)内のファイルは対象としません。開いてすぐの場所にあるファイルのみ対象です。

順序を表すと、以下のような感じです。

for ②ここに入れ込み   in (①ここから1つ取り出し)   do (
③この処理を行う
)

以下は、「C:\xxx」フォルダ内の、「*.txt」(〜.txt)ファイルのパスを表示する例です。

@echo off

for %%l   in ("C:\xxx\*.txt")   do (
echo %%l
)

pause

for %%l」は、「%%l」に代入する、という意味です。

in ("C:\xxx\*.txt")」は、
C:\xxx」フォルダ内の、「*.txt」(〜.txt)ファイルを対象にする、という意味です。
サブフォルダ内のファイルは対象としません。

アルファベットに代入されるパス(場所)は、
C:\xxx」というような形式で、
"C:\xxx"」のように「"」で囲まれませんので、ご注意ください。

"」で囲む必要がある場合は、自分で「"%%l"」と記述する必要があります。

do (echo %%l)」は、「echo %%l」行う、
つまり、「%%l」に入っている内容を画面に表示する、という意味です。
これでファイル名が表示されます。

以下は、サブフォルダ内のファイルも対象にする例です。

@echo off

for /r "C:\xxx" %%l   in ("*.txt")   do (
echo %%l
)

pause

"C:\xxx"」は、対象フォルダです。

/r」は、サブフォルダも対象にするオプションです。

in ("*.txt")」は、対象ファイルを指定しています。

ファイル内の行を1行ずつ処理する

ファイル内の行1行ずつ取り出して処理するには、「for文」を使います。

以下は、「C:\xxx\リスト.txt」から1行ずつ取り出して処理する例です。

@echo off

for /f "usebackq delims=" %%l   in ("C:\xxx\リスト.txt")   do (
echo %%l
)

pause

usebackq」は、ファイル指定に「"」を使う、という意味です。

これを付けないと、「"」で囲まれた部分自体が、「ファイルのパス」ではなく、「入力データ」そのものとして扱われてしまいます。

delims=」は、行の中の区切りを指定します。

初期設定では、「半角スペース」や「タブ」が区切りの文字ですが、「=」の後に何も書かない事により、区切りの文字を無しにしています。つまり、行を途中で区切らないという意味です。

ファイルの情報を取得する

for文」を利用して、指定ファイルの情報を取得する方法です。

以下は、「C:\Windows\notepad.exe」ファイルの、ファイルサイズを表示する例です。

for %%l   in ("C:\Windows\notepad.exe")   do echo 「%%l」は「%%~zl」バイトです。

%%l」には、「C:\Windows\notepad.exe」が代入されます。

%%~zl」は、「%%l」のファイルサイズを表します。

以下が上記の実行結果です。

"C:\Windows\notepad.exe"」は「236032」バイトです。

又、以下のように、取得した値を変数に代入してから使う方法もあります。

for %%l   in ("C:\Windows\notepad.exe")   do set "ファイルサイズ=%%~zl"

echo 「C:\Windows\notepad.exe」は「%ファイルサイズ%」バイトです。

set "ファイルサイズ=%%~zl"」で、変数「ファイルサイズ」に、「C:\Windows\notepad.exe」のファイルサイズを表す「%%~zl」を代入しています。

そうすると、「%ファイルサイズ%」という記述で、対象のファイルサイズを使用出来ます。

別の処理へ移動する

goto」コマンドを使って、別の処理へと移動する方法です。

以下は、「あああ」と表示する処理を飛ばす例です。

@echo off

goto AAA

echo.あああ

:AAA

echo.いいい

pause

goto AAA」は、「AAA」というラベル(目印)に移動する処理です。

echo.あああ」は、画面に「あああ」と表示する処理です。

:AAA」は、ラベルです。頭に「:」を付けるとラベルとなります。

goto AAA」で、「:AAA」にジャンプするイメージですから、間にある処理は無視されます。つまり、画面に「あああ」は表示されません。

以下が実行結果です。

いいい

続行するには何かキーを押してください . . .

処理の終了

exit」コマンドを使うと、処理を終了出来ます。

以下は、「AAA」フォルダだけを作成し、バッチファイルを終了する例です。

md "AAA"

exit

md "BBB"

exit」を実行した時点で、バッチファイルが終了します。「BBB」フォルダは作成されません。

又、「/b」オプションを付けて、「exit /b」とすると、「この処理は終了する」という意味合いになります。

例えば、「call」コマンドで、別のバッチファイルや、別の処理(サブルーチン)を行っていた場合、その中に「exit /b」とすると、その処理はそこで終了となり、メインのバッチファイルへと戻り、メインの続きの処理が実行されます。

サブの処理を実行する

call」コマンドを使って、サブの処理(サブルーチン)を実行する例です。

何度も繰り返し使う処理は、別のバッチファイルや、サブルーチンにしておけば、一度書くだけで済むので便利です。

まずは、別のバッチファイルを用意して、それをメインのバッチファイルから呼び出して使う例です。

メイン.bat」と「サブ.bat」を用意します。

以下は、「メイン.bat」の内容です。

@echo off

echo.メインを開始しました

call "サブ.bat"

echo.メインを終了しました

pause

以下は、「サブ.bat」の内容です。

echo.サブを開始しました

echo.サブを終了しました

メイン.bat」の「call "サブ.bat"」の部分に、「サブ.bat」の内容が入るイメージです。

しかし、ラベルは実行中のバッチファイル内のもののみ有効です。

以下は、実行結果です。

メインを開始しました

サブを開始しました

サブを終了しました

メインを終了しました

次に、一つのバッチファイル内に、サブの処理(サブルーチン)を書く例です。

@echo off

rem --------------------

echo.メインを開始しました

call :サブルーチン

echo.メインを終了しました

pause

exit

rem --------------------

:サブルーチン

echo.サブを開始しました

echo.サブを終了しました

exit /b

rem --------------------

call :サブルーチン」の部分に、「:サブルーチン」〜「exit /b」の内容が入るイメージです。「exit /b」によってサブルーチンが終了されます。

上の方にある「exit」が、バッチファイル自体の終了地点となります。

注意点は、「goto」コマンドと違い、「call」コマンドの場合は、「call :ラベル名」という風に、ラベル名の前に「:」を付ける必要がある事です。

「もし〜なら」という処理

if」文を利用すると、「もし〜なら」という処理を行えます。

これを、条件分岐と呼びます。

以下は、もし、「C:\Windows\notepad.exe」があれば、「ありました」と表示する例です。

@echo off

if exist "C:\Windows\notepad.exe" echo.ありました

pause

if exist」は、「もし、あれば」という意味です。

その後の、「"C:\Windows\notepad.exe"」が対象ファイルです。

その後に、「あった場合」に行う処理を書きます。

又、「if exist」を、「if not exist」に変更すると、「無かった場合」という意味になります。

複数の処理を行いたい場合は、行う処理を「( )」で囲んで、改行を入れ、以下のように書きます。

@echo off

if exist "C:\Windows\notepad.exe" (
echo ありました
echo ありました
echo ありました
)

pause

( )」で囲んだ部分は、「ブロック」(ブロック文)と呼びます。

又は、以下のように、「if not exist」と「goto」を使って、対象が無かった場合は処理を飛ばすという事も出来ます。

言い換えれば、対象があった場合のみ処理を行う、という事です。

@echo off

if not exist "C:\Windows" goto END_Windows
echo 「Windows」フォルダを発見しました
:END_Windows

if not exist "C:\Windows2" goto END_Windows2
echo 「Windows2」フォルダを発見しました
:END_Windows2

pause

goto」は、指定した行(ラベル)まで移動するという処理です。ジャンプするようなイメージです。

:END_Windows」と「:END_Windows2」は、「ラベル」と呼ばれる目印となる行です。「:」(半角コロン)から始まります。名前は任意です。

以下は、「もし、〜が、あった場合はこれを実行し、それ以外の場合(無ければ)はこれを実行する」という処理です。

@echo off

if exist "C:\Windows\notepad.exe" (
echo ありました
) else (
echo ありませんでした
)

pause

else」は「それ以外の場合」という意味です。

1つ目のブロックが、「あった場合」の処理です。

2つ目のブロックが、「それ意外の場合(無かった場合)」の処理です。

if」(条件)を複数付ける事も出来ます。

以下は、ユーザーが入力した血液型を表示する例です。

@echo off

echo.
echo. 血液型を入力し、Enterキーを押してください
echo.

set /p "入力="

if /i "%入力%"=="a" (
echo 入力された血液型は「A」でした

) else if /i "%入力%"=="b" (
echo 入力された血液型は「B」でした

) else if /i "%入力%"=="ab" (
echo 入力された血液型は「AB」でした

) else if /i "%入力%"=="o" (
echo 入力された血液型は「O」でした

) else (
echo 不明な血液型でした

)

pause

set /p "入力=" 」は、ユーザーからの入力を、変数「入力」に代入する処理です。

if /i "%入力%"=="a"」は、「%入力%」(ユーザーが入力した値)が「a」であれば、という意味です。

==」は、「等しい」という意味で、「=」が2個なので、1個と間違わないようにご注意ください。

/i」オプションは、大文字/小文字を区別しない、という意味です。

数値の比較も出来ます。

以下は、ユーザーが入力した数値を、「100」と比較する例です。

@echo off

echo.
echo. 数値を入力し、Enterキーを押してください
echo.

set /p "入力="

if %入力% EQU 100 echo 「100」と等しい数値です
if %入力% NEQ 100 echo 「100」と等しくない数値です
if %入力% GEQ 100 echo 「100」以上の数値です
if %入力% GTR 100 echo 「100」より大きい数値です
if %入力% LEQ 100 echo 「100」以下の数値です
if %入力% LSS 100 echo 「100」より小さい数値です

pause

%入力%」は、ユーザーが入力した数値を表す変数です。

その直後のアルファベット3文字が、「比較演算子」と呼ばれるもので、比較方法を表します。

注意点は、変数「入力」が空だった場合、構文が崩れ、バッチファイル(コマンドプロンプト)が場合によっては終了してしまいます

これを回避するには、「if %入力%0 GEQ 1000」のように、「%入力%」と「100」の末尾数字を付加すると回避出来ますが、これにつきましては、もしかしたら、もっとスマートな方法もあるかも知れません。

パスを通す

パスを通す」とは、プログラムを名前を指定しただけで実行出来るようにする事です。

例えば、「C:\Windows\notepad.exe」であれば、「notepad」という記述だけで実行出来るようにするという意味です。

Windowsには、環境変数(環境によって異なる変数)というものが用意されており、その中に「path」というもの環境変数があります。

path」には、様々なフォルダが登録されており、名前だけを指定してプログラムを実行した場合は、この「path」に登録されたフォルダが参照され、そこに指定したプログラムがあれば実行されます。

つまり、名前だけでプログラム等を指定した場合は、このフォルダ内を探すようになっています。

例えば、「aaa.exe」というプログラムをダウンロードして、「aaa」と記述しただけで使えるようにしたい場合は、既にパスが通っているフォルダにそのプログラムを入れるか、そのプログラムが入っているフォルダを「path」に登録する必要があります。

既にパスが通っているフォルダにそのプログラムを入れる場合は、例えば、「C:\WINDOWS」フォルダ等がパスの通ったフォルダですから、そこに目的のプログラムをコピーします。

ただ、このフォルダは、Windowsにとって重要なフォルダですから、同名のファイルがあった場合は、上書きしないでください。

又、PCをリカバリーした場合は、上記でコピーしたファイルは消えますので、別の場所にバックアップを取っておくと良いでしょう。

プログラムが入っているフォルダを「path」に登録する場合は、Windowsの環境変数を変更します。

プログラムを入れる用のフォルダをCドライブ直下等に1つ作っておき、それを登録すると良いでしょう。

一度登録すれば、その後はそのフォルダにプログラムを入れるだけでパスが通ります。

登録方法は、以下の通りです。

Windows10の場合は、
デスクトップ左下のWindowsロゴのボタンをクリックし、
左にある歯車マークをクリックし、
検索窓に「変数」と打ち込み、
システム環境変数の編集」をクリックし、
環境変数」をクリックし、
システム環境変数」の中にある「path」をダブルクリックし、
新規」をクリックし、
今回追加したいプログラムが入ったフォルダのパス(場所)を書き込み、
OK」をクリックし、
残りの画面も「OK」等をクリックして閉じます。

パスは、「C:」ドライブ内の、「AAA」フォルダ内の、「BBB」フォルダであれば、
半角の「\」区切りで、「C:\AAA\BBB」と記述します。

パスは手打ちでも良いですが、最近のWindowsであれば、パスを取得したいフォルダを「Shift」キーを押しながら右クリックし、「パスのコピー」や「パスとしてコピー」をクリックしても取得出来ますので、あとは、そのパスを記述したい場所を一度クリックし、「Ctrl」キーを押しながら「V」キーを押すと、そのクリックした場所にパスが挿入されます。

Windows7の場合は、
デスクトップ左下のWindowsロゴのボタンをクリックし、
検索窓に「変数」と打ち込み、
システム環境変数の編集」をクリックし、
環境変数」をクリックし、
システム環境変数」の中にある「path」をダブルクリックし、
変数値」の末尾に、まず仕切りとして「;」(半角セミコロン)を書き込み、
続けて、今回追加したいプログラムが入ったフォルダのパス(場所)を書き込み、
OK」をクリックし、
残りの画面も「OK」等をクリックして閉じます。

その他のWindowsの場合も、システムの詳細設定環境変数の「path」に、プログラムのフォルダのパスを追加する点は同じですが、詳しい方法は、お使いのWindowsのバージョン + 「パス 通す」等のワードでWEB検索なさってみてください。

お使いのWindowsのバージョンが分からない場合は、Windowsロゴのキーを押しながら「Pause/Break」キーを押すと確認出来ます。

ファイルのダウンロード

curl」というプログラムを利用してファイルをダウンロードする方法です。

まず、「curl」自体をダウンロードします。

こちらの「curl」のダウンロードページを開き、

32ビット版のWindowsをお使いの場合、又は、不明の場合は、「Win32 - Generic」の所のリストの右にあるバージョン(数値)いくつかクリックすると、直接ファイルをダウンロード出来るリンクがあるかと思いますので、そのファイルを保存します。

64ビット版のWindowsをお使いの場合は、「Win64 - Generic」の所で、上記と同様の操作を行ってください。

保存した圧縮ファイルを展開(解凍)します。 ※展開方法が分からない場合はこちら

展開して出来たフォルダを開いていくと、「curl.exe」が入っているフォルダがあるかと思いますので、そこにある全てのファイルを、「C:\WINDOWS」フォルダ、又は、パスの通ったフォルダにコピーします。これでパスが通り、使える状態となります。

もし、curlを実行して「このバージョンの 〜 は、実行中の Windows のバージョンと互換性がありません。」というエラーが表示される場合は、違うフォルダに入った「curl.exe」と、同じ場所にある関連ファイルを使用してください。

以下は、curlの書式です。

curl -k -o "出力ファイル" "ダウンロードURL"

-k」オプションは、SSLを使用しているときに安全でないサーバー接続を許可するオプションです。ダウンロード出来ない問題を回避します。

-o」オプションは、出力ファイルを指定するものです。

以下は、「https://www.google.co.jp/」を、「ダウンロード.txt」としてダウンロードする例です。

@echo off

curl -k -o "ダウンロード.txt" "https://www.google.co.jp/"

pause

詳しい使い方は、解説サイトをご覧になるか、バッチファイル内に「curl --help」と記述して実行するとヘルプが表示されます。

テキストファイルの文字コードを変更する

テキストファイルは、本来、人間が読めないデータの塊ですが、それを、ある規則に乗っ取って文字として表現すると、人間が読める文字となります。

その規則が「文字コード」です。「Shift_JIS」や「UTF-8」等があります。

例えば、WEBページは、表現出来る文字が多い「UTF-8」という文字コードで書かれている事が多いですが、Windowsで作成されるテキストファイルは、「Shift_JIS」(正確には「Windows-31J」)という文字コードの場合が多いです。

行う処理によっては、入力ファイルの文字モードが「Shift_JIS」でないと正常な処理が出来ないケースがあるので、そういう場合は入力ファイルの文字コードを変換します。

今回は、「nkf」というプログラムを使って、文字コードを変換する方法をご紹介します。

こちらの「nkf」のダウンロードページを開き、「このソフトを今すぐダウンロード」をクリックし、ファイルを保存します。ページに広告があるのでご注意ください。 ※保存方法が分からない場合はこちら

保存した圧縮ファイル「nkfwin」(.zip)を展開(解凍)します。 ※展開方法が分からない場合はこちら

展開して出来た、
nkfwin」フォルダ内の、
vc2005」フォルダ内の、
「win32(98,Me,NT,2000,XP,Vista,7)ISO-2022-JP」フォルダ内、あるいは、
「win32(98,Me,NT,2000,XP,Vista,7)Windows-31J」フォルダ内の、
nkf」(.exe)ファイルを、
C:\WINDOWS」フォルダ、又は、
パスの通ったフォルダにコピーします。
これでパスが通り、nkfが使える状態となります。

以下は、nkfで文字コードを「Shift_JIS」に変換する例です。

nkf -s "入力ファイル.txt" > "出力ファイル.txt"

-s」オプションは、「Shift_JIS」に変換するオプションです。

以下は、nkfで文字コードを「UTF-8」に変換する例です。

nkf -w8 "入力ファイル.txt" > "出力ファイル.txt"

-w8」オプションは、「UTF-8」に変換するオプションです。

文字列置換

sed」というテキスト処理を行うプログラムの、より日本語に対応した「onigsed」というプログラムを使って、文字列の置換する方法です。

こちらの「onigsed」のダウンロードページを開き、一番新しいバージョンのリンクをクリックし、ファイルを保存します。 ※保存方法が分からない場合はこちら

保存した圧縮ファイル「onigsed-〜」(.zip)ファイルを展開(解凍)します。 ※展開方法が分からない場合はこちら

展開したフォルダを開き、中にある、「onigsed」(.exe)ファイルを、「C:\Windows」フォルダ、又は、パスの通ったフォルダにコピーします。これでパスが通り、使える状態となります。

以下は、onigsedで「AAA」を「BBB」に置換する例です。

onigsed -e "s/AAA/BBB/gi" "入力ファイル.txt" > "出力ファイル.txt"

-e」オプションは、その行に直接処理を書き込むオプションです。

s/AAA/BBB/gi」の、意味は以下の通りです。

  • s」=「置換する」の意(sedのコマンド)
  • /」=区切りとなる文字(デリミタ)
  • g」=条件にあった全ての箇所を処理するフラグ(指定しないと最初の1つのみ)
  • i」=大文字、小文字の区別をしないフラグ

以下は、onigsedで複数の置換処理を行う例です。

onigsed -e "s/AAA/BBB/gi ; s/CCC/DDD/gi" "入力ファイル.txt" > "出力ファイル.txt"

;」で区切ります。その前後の半角スペースはあっても無くても良いです。

「s/〜/〜/gi; s/〜/〜/gi;」のように、習慣的に「;」を付けても良いです。

又、以下のようにデリミタ(区切りの文字)を変更する事も出来ます。以下は「@」に変更しています。

onigsed -e "s@AAA@BBB@gi" "入力ファイル.txt" > "出力ファイル.txt"

又、全ての例にある「"」は、コマンドプロンプトの半角記号関係のエラー防止で念の為に付けているもので、内容によっては付けなくても良い場合もあります。

又、「"」という文字を、「'」に置換したい場合は、以下のように記述します。

onigsed -e "s/"^""/'/gi" "入力ファイル.txt" > "出力ファイル.txt"

又、「正規表現」と呼ばれる、対象文字列の詳細な指定方法も使えます。

これについては少し高度になり、長くなりますのでここでは割愛します。ご興味があれば「正規表現」でWEB検索なさってみてください。正規表現の仕様はプログラムにより異なりますが、ある程度の部分は共通しています。

出来る事の一例を挙げると、
2018/01/15」というような形式の文字列を、
2018年1月15日」というような形式に置換したり出来ます。

他にも様々な置換が出来ます。

onigsed(sed)での様々な処理

onigsed」(sed)でよく使う処理を以下の書きたいと思います。

指定文字列を「含む」行の抽出(大文字/小文字は区別する)
onigsed -n "/文字列/p" "入力.txt" > "出力.txt"

指定文字列を「含まない」行の抽出(大文字/小文字は区別する)
onigsed -n "/文字列/!p" "入力.txt" > "出力.txt"

空行の削除
onigsed -n "/./p" "入力.txt" > "出力.txt"

改行を無くす
onigsed -e ":loop;N;$!b loop;s/[\n\r]//gi" "入力.txt" > "出力.txt"

改行を増やす
onigsed -e ":loop;N;$!b loop;s/[\n\r]/\n\n/gi" "入力.txt" > "出力.txt"

改行を「 」に置換
onigsed -e ":loop;N;$!b loop;s/[\n\r]/ /gi" "入力.txt" > "出力.txt"

改行を「\n」に統一
onigsed -e ":loop;N;$!b loop;s/[\n\r]/\n/gi" "入力.txt" > "出力.txt"

指定行を抽出(例:1行目)
onigsed -n "1p" "入力.txt" > "出力.txt"

指定行を削除(例:1行目)
onigsed -e "1d" "入力.txt" > "出力.txt"

指定範囲の行を抽出(例:2行目〜4行目)
onigsed -e "2,4!d" "入力.txt" > "出力.txt"

指定範囲の行を削除(例:2行目〜4行目)
onigsed -e "2,4d" "入力.txt" > "出力.txt"

onigsed(sed)において、半角の「 \ . $ * ^ [ ] - & 」等は、場合によっては特別な意味を持ちますので、文字として使う場合は、直前に「\」を書いてください。

\」なら「\\」、
$」なら「\$」、
という感じです。この処理を「エスケープ」と呼びます。

-」に関しては、「 [ ] 」内でのみ「\」を付ける必要があります。

バッチファイルを最小化で実行する

バッチファイルを最小化で実行する方法です。

ショートカットから、バッチファイルを最小化で実行する

バッチファイルを右クリックしたまま、デスクトップやフォルダの余白部分に持って行き、右クリックを離し、出たメニューから「ショートカットをここに作成」をクリックします。
画像

以下のようにショートカットが作成されます。
画像

作成されたショートカットを右クリックし、「プロパティ」をクリックします。
画像

実行時の大きさ」の所の欄をクリックし、「最小化」をクリックし、「OK」をクリックします。
画像

後は、当該のショートカットをダブルクリックして実行すると、バッチファイルが最小化の状態で起動されます。

バッチファイルから、バッチファイルを最小化で実行する

起動する側のバッチファイルに、以下のような感じで記述します。

以下は、「C:\xxx\バッチファイル.bat」を最小化で実行する例です。

start /min cmd /c, "C:\xxx\バッチファイル.bat"

start」は、ファイルを実行するコマンドで、「/min」は、最小化で実行するオプションです。

cmd」は、コマンドプロンプト自体で、「/c」は、コマンドを直接記述するオプションです。「,」に続けてコマンドを記述します。今回はバッチファイルを指定して実行しています。

バッチファイルから、バッチファイルのショートカットを実行する

AAA.bat」のショートカットを作成すると、
AAA.bat - ショートカット」という感じの名前のショートカットが作成されますが、
これには隠された「lnk」という拡張子が付いており、実際は、
AAA.bat - ショートカット.lnk」というファイル名となります。

その為、バッチファイルからこのショートカットを実行するには、以下のような感じで記述します。

start /min "" "AAA.bat - ショートカット.lnk"

start」は、ファイルを実行するコマンドです。

/min」は、最小化で起動するオプションです。

""」は、ウィンドウタイトルを記述するものですが、今回は空です。

又、作成したショートカットの名前を、
AAA.bat - ショートカット」から、
AAA」に変更しておくと、
AAA.lnk」という感じで記述出来るので楽です。

バッチファイルをタスクトレイに格納する

TaskTrayPlus」というフリーソフトを使って、バッチファイルをタスクトレイに格納する方法です。

ダウンロードとセットアップ

こちらの「TaskTrayPlus」のダウンロードページを開き、
Download」の所にある、「Ver 〜」をクリックし、
ファイルを保存します。
※保存方法が分からない場合はこちら
画像
(※ページのデザインは異なる場合があります。)

保存した圧縮ファイル「ttp〜」(.lzh)ファイルを展開(解凍)します。 ※展開方法が分からない場合はこちら

Windowsロゴのキーを押しながら「R」キーを押し、
cmd」と半角で打ち込んでEnterキーを押すと、
コマンドプロンプトが起動しますので、そのウィンドウをそのまま開いて置いておきます
これは、TaskTrayPlusにウィンドウを認識させる為のものです。

TskTrayP」(.exe)ファイルを実行します。
画像

起動すると、デスクトップ右下のタスクトレイにアイコンが表示されます。
画像

表示されない場合は、矢印的なマークをクリックして隠されたアイコンを確認します。
画像

TaskTrayPlusのアイコンを右クリックし、「設定」をクリックします。
画像

動作設定」タブで、「ターゲット・ウィンドウ アイコンを表示」にチェックを入れます。
画像

現在のタスク」の欄内で、バッチファイル(コマンドプロンプト)のウィンドウをクリックして選択し、「↓追加」をクリックし、「OK」をクリックします。
画像

デスクトップ右下のタスクトレイ内に、バッチファイルのアイコンが表示されます。
画像

表示されない場合は、矢印的なマークをクリックして隠されたアイコンを確認します。
画像

そのアイコンをダブルクリックすると、ウィンドウが表示されます。

TaskTrayPlusで最小化したバッチファイルのアイコンを変更する

TaskTrayPlusで最小化したバッチファイルのアイコンを変更する方法です。

アイコンを変更したいバッチファイルを右クリックしたまま
デスクトップやフォルダの余白部分に持って行き、
右クリックを離し
出たメニューから「ショートカットをここに作成」をクリックします。
画像

以下のようにショートカットが作成されます。
画像

作成されたショートカットを右クリックし、「プロパティ」をクリックします。
画像

アイコンの変更」をクリックします。
画像

利用できるアイコンがありません」という旨の警告が出た場合は、「OK」をクリックします。
画像

参照」をクリックしてアイコンファイルを選択するか、
中央にある欄内からアイコンを選び、「OK」をクリックします。
画像

OK」をクリックします。
画像

後は、上記のショートカットを実行すると、アイコンが変更されたバッチファイルが起動します。

バッチファイルでやりたい事を実現する

バッチファイルで何かを実現したい場合は、やりたい事 + 「バッチファイル」や「コマンド」や「コマンドプロンプト」等のワードでWEB検索してみてください。

例えば、手持ちの動画をMP4ファイルに変換したい場合は、「MP4 変換 バッチファイル」や「MP4 変換 コマンド」等でWEB検索してみてください。