フォルダ内のファイルを一覧出力するバッチの例文を作りました。

フォルダ内のファイルに一括して処理を行いたい場合は、このコードをコピペして使ってもらえればOKです。

 

ということでこんにちは、20代怠け者(@20sInvest)です。

先日、色々とバッチをいじる機会がありましたので、備忘録として残しておきますね。

特定フォルダを指定すると、そのフォルダ内の全ファイル名を取得・一覧出力するバッチのコードです。

 

  ちなみに、指定したフォルダ内のファイルの一覧を「見るだけ」なら、DIRコマンドを使って表示することも可能です。

ただし、あくまでDIRコマンドはファイル一覧を表示するだけなので、ここからフォルダ内の全ファイルに向かって何かしらの処理をすることは出来ません。

例えば、全ファイルをコピーして他のフォルダにバックアップする、などですね。

こうした操作をしたい場合は、この記事の方法でファイルを取得する必要があります。

【実験】こんなファイルを用意しました

さて、今回はこんなフォルダとファイルを用意しました。

C:¥Test

 

このフォルダ内には、何も書いていない空っぽのテキストファイルが5つ保存されています。

このフォルダ名を指定して、バッチファイルで一覧を取得しよう! というのが今回の目的です。

【ソース①】引数でフォルダ名を指定して、全ファイルを取得するバッチ

ということで、そのソースがこちらです。

@echo off

for %%f in (%1\*) do (
	echo %%~nxf
	)

 

引数でフォルダパスを指定すると、そのフォルダ内に入っているすべてのファイル名を取得・一覧表示します。

実行コマンドとしては、こんな感じ。 (filecheckはバッチ名です)

filecheck C:¥Test

 

これを実行すると、このような一覧が出力されます。

ここでは「echo」でファイル名を出力しているだけですが、ファイルに大してコピーしたり、削除したり…といった処理ももちろん可能です。

どういう処理をしているのか?

かるーく、どういった処理をしているのか解説します。

このfor文は、指定したフォルダの全ファイルをチェックして、その回数分だけ指定された処理をしますよ、という内容になっています。

(%1\*)という記述は、引数で指定したフォルダの全ファイルを対象にする…という指定ですね。

実際のパスにすると、こんな感じです。

C:¥Test¥*

(*は、全ファイルを示す)

 

あとは、処理としてそれぞれのファイル名をechoで出力しているよ、というだけの話ですね。

echo %%~nxf と記述すると、それぞれのファイル名をシンプルに出力してくれます。

【ソース②】バッチ内で直接フォルダ名を指定する場合

引数とか使うの面倒なんで、バッチファイルの中で直接指定したいよ!

…という場合は、こちらのソースでもOKです。

@echo off

for %%f in (C:\Test\*) do (
	echo %%~nxf
	)

 

見ればおわかりの通り、for文のパス部分を引数でなくて、直接コードの中で指定してます。

(C:\Test\*)

 

パスの指定方法が変わっただけなので、上記のコードでも同じ結果が得られます。

もちろん、コードに直接指定してしまっているので他のフォルダの結果を得たい場合は、毎回コードを書き換えないとダメですよ〜、ということになります。

 

ということで簡単にですが、フォルダ内の全ファイルを取得する方法でした。

以上、ご参考までに!

それでは!