Windows-バッチ,フォルダかファイルかを論理値で判定

スポンサーリンク

鍛錬 488

Windows-バッチ,フォルダかファイルかを論理値で判定する

フォルダ(ディレクトリ)かファイルかを TRUE と FALSE の論理値で判定するには、forfiles を使用します。
 
使用方法は、以下に示す通りです。

フォルダの場合

forfiles /P %検索するパス% /C “cmd /c if @isdir==TRUE echo @file”

 
ファイルの場合

forfiles /P %検索するパス% /C “cmd /c if @isdir==FALSE echo @file”

オプション

以下は、上記のオプションについてです。

オプション 機能
/P 検索を開始するパスを指定する
/C 二重引用符で囲まれたコマンド文字列を実行する
@isdir ファイルかフォルダかを判定する
フォルダの場合:TRUE
ファイルの場合:FALSE
@file ファイル名を取得する
スポンサーリンク

バッチファイル

以下は、フォルダを検索し、ファイルの種類がフォルダかファイルかを判定するバッチファイル、check_file.bat です。

今回は、フォルダ D:\tmp を検索しています。

@echo off

setlocal

rem 検索を開始するパスを格納
set DIR_PATH=D:\tmp

echo;

echo ---以下はファルダの一覧です-------

forfiles /P %DIR_PATH% /C "cmd /c if @isdir==TRUE echo @file"

echo ----------------------------------
echo;

echo ---以下はファイルの一覧です-------

forfiles /P %DIR_PATH% /C "cmd /c if @isdir==FALSE echo @file"

echo ----------------------------------

endlocal

exit /b 0
スポンサーリンク

実行結果

以下は、フォルダ D:\tmp の内容を dir コマンドで確認後、バッチファイル check_file.bat を実行してフォルダかファイルかを判定しています。

D:\batch>
D:\batch>dir D:\tmp
 Volume in drive D has no label.
 Volume Serial Number is ****-****

 Directory of D:\tmp

2019/04/13  01:52    <DIR>          .
2019/04/13  01:52    <DIR>          ..
2019/04/13  00:27    <DIR>          DIR_1
2019/04/13  00:27    <DIR>          DIR_2
2019/04/13  00:27    <DIR>          DIR_3
2019/04/04  22:34                 7 sample_1.txt
2019/04/04  22:34                 7 sample_2.txt
2019/04/04  22:34                 7 sample_3.txt
               3 File(s)             21 bytes
               5 Dir(s)  230,835,744,768 bytes free

D:\batch>
D:\batch>
D:\batch>check_file.bat

---以下はファルダの一覧です-------

"DIR_1"
"DIR_2"
"DIR_3"
----------------------------------

---以下はファイルの一覧です-------

"sample_1.txt"
"sample_2.txt"
"sample_3.txt"
----------------------------------

 
上記に示した通り、フォルダとファイルを判定することができました。

タイトルとURLをコピーしました