【Batch】引数がディレクトリなのかファイルなのかを判定する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Batch】引数がディレクトリなのかファイルなのかを判定する

2022-1-18 |

Batchに渡された引数がディレクトリなのかファイルなのかを判定したい!

概要

Batchに渡された引数がディレクトリなのかファイルなのかそれ以外なのかを判定する例を示す。

仕様書

環境

  • Windows 10 Home Version 21H1(OS ビルド 19043.1415)

手順書

下記は、引数がディレクトリなのかファイルなのかそれ以外なのかを判定するサンプルです。

@echo off

:loop

if "%~1" == "" goto end

echo %~1

set attr=%~a1

if exist %~1 (
    if %attr:~0,1%==d echo %~1 is directory!
    if %attr:~0,1%==- echo %~1 is file!!
) else (
    echo %~1 is other!!!
)

shift
goto loop

:end

pause

引数がディレクトリであれば<引数> is directory!、ファイルであれば<引数> is file!!、ディレクトリでもファイルでもなければ<引数> is other!!!と出力される。

解説

はじめにif exist %~1で存在するパスか判定する。存在してなければ、ディレクトリでもファイルでもない文字列(例えばオプションとか)である。

存在するパスだった場合、ファイルの属性を表す文字列の1文字目を判定する。dであればディレクトリ、-であればファイルである。

まとめ(感想文)

ディレクトリとファイルで処理を切り替えたい場合に使えるかもね!