■ サンプル
https://dk521123.hatenablog.com/entry/2010/11/22/230218
の続き。 今回は、ファイル・ディレクトリの扱う。
目次
【1】指定のパス配下のディレクトリ・ファイルを取得する 【2】指定のパス配下にディレクトリが存在するか 【3】現在のパスを取得する 【4】ファイル名を取得する 【5】自分自身のパスを取得する 【6】存在有無の確認する
【1】指定のパス配下のディレクトリ・ファイルを取得する
構文
for /d %%変数名 in ( フォルダー名や文字列 ) do 実行するコマンド
サンプル
例1:C:\Program Files\Java 配下のディレクトリ・ファイルを出力する
REM C:\Program Files\Java 配下のディレクトリ・ファイルを出力する @echo off for /d %%f in ("C:\Program Files\Java\*") do echo Result : %%f pause echo on
例2:C:\Program Files\Java 配下で「jdk」で絞り込む
REM C:\Program Files\Java 配下で「jdk」で絞り込む @echo off echo JAVA_HOME : %JAVA_HOME% SET XJC_EXE=%JAVA_HOME%\bin\xjc.exe if not exist "%XJC_EXE%" ( REM clear SET XJC_EXE= REM C:\Program Files\Java 配下で「jdk」で絞り込める for /d %%f in ("C:\Program Files\Java\jdk*") do ( SET XJC_EXE=%%f\bin\xjc.exe ) ) echo XJC_EXE : %XJC_EXE% SET XJC_EXE= echo Done pause echo on
参考資料
http://tounderlinedk.blogspot.jp/2011/03/for-d-for-windowsbatcmd.html
【2】指定のパス配下にディレクトリが存在するか
* 上記「指定のパス配下のディレクトリ・ファイルを取得する」の応用でできる
サンプル
@echo off for /d %%f in ("C:\Program Files\Java\*jdk*") do goto EXSITS echo Not Found JDK goto END :EXSITS echo Found JDK :END pause echo on
【3】現在のパスを取得する
* 「%~dp0」で取得可能
サンプル
REM バッチのフォルダ配下の全てのフォルダを取得 echo off FOR /d %%folder IN (%~dp0\*) DO ( REM 処理を書く )
参考資料
http://www.hm-lab.net/archives/72
【4】ファイル名を取得する
サンプル
REM ディレクトリ内のGIFファイルを変数に設定する FOR %%B IN (*.gif) DO ( echo %%B )
【5】自分自身のパスを取得する
* 「%0」で取得可能 * 『%0 :バッチファイル名(フルパス含む)』を表す
サンプル
echo %~dp0 echo %0 pause
【6】存在有無の確認する
構文
if exist 【確認対象】 【存在した場合、実行される処理】 または if not exist 【確認対象】 【存在しなかった場合、実行される処理】
サンプル
例2:ファイルチェック
if exist test.bat echo test.batが見つかりました if not exist test2.bat echo test2.batが見つかりません pause
例2:環境変数が設定されているかチェック
SET JDK_TEMP=%JAVA_HOME% if not exist "%JDK_TEMP%" ( REM Use Default JDK SET JDK_TEMP=C:\Program Files\Java\jdk1.8.0 )
関連記事
バッチ ~入門編 ~
https://dk521123.hatenablog.com/entry/2010/07/06/223905
バッチ ~ 基本編 / 変数の扱い ~
https://dk521123.hatenablog.com/entry/2010/11/23/165433
バッチ ~ 基本編 / コピー&削除 ~
https://dk521123.hatenablog.com/entry/2010/11/22/230218
バッチ ~ 基本編 / リダイレクション ~
https://dk521123.hatenablog.com/entry/2015/03/16/232627