【Batch】引数がディレクトリなのかファイルなのかを判定する
2022-1-18 | Batch
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
であればディレクトリ、-
であればファイルである。
まとめ(感想文)
ディレクトリとファイルで処理を切り替えたい場合に使えるかもね!