バッチファイルで、指定したファイルが存在するフォルダのパスを取得する

バッチファイルの for /r 文で、
「指定ファイルが存在しているフォルダのパス(場所)を取得したい」と思い
いろいろ調べて作ったコードです。
このバッチファイルが置かれているフォルダ内を再帰的に検索して、
指定ファイルが見つかったらフォルダパスを取得するコードになります。

指定ファイルが置かれているパスを取得した変数の echo を start "" にすることで開くこともできるようになるので、コードを少し追加・変更するとランチャーとしても使えるようになると思います

@echo off
setlocal enabledelayedexpansion


rem ここに探すファイル名を指定する
set Specified_FileName=test.txt


for /r %%d in (%Specified_FileName%) do (

if exist %%d (

rem 指定ファイルが見つかったフォルダパスを変数に代入する
set "Specified_Folder=%%~dpd"

rem ファイル名と拡張子を含めたパスを変数に代入する
set "Specified_File_Path=%%~dpfxd"

rem 指定ファイルが存在しているフォルダパスの最後の / を抜いたパスを変数に代入する
set Specified_Folder_Del_Character=!Specified_Folder:~0,-1!


goto File_Found

)


)

rem 指定ファイルが見つからなかった時にここで処理を終了させる
echo.
echo 指定ファイルが見つかりませんでした
echo 画面を閉じてください
pause >nul
exit


:File_Found

echo.
echo パス最後に \ が残っている
echo %Specified_Folder%

echo.

echo パス最後の \ を削除したもの
echo %Specified_Folder_Del_Character%

echo.

echo ファイル名+拡張子 込みのパス表示
echo %Specified_File_Path%

echo.

echo 画面を閉じてください
pause >nul
exit

上記コードをテキストファイルに貼り付けて拡張子を .bat にして実行すると動くと思います。保存するときは、[名前を付けて保存] してエンコードを ANSI で保存してください。これをしないと日本語が文字化けします。


この記事が気に入ったらサポートをしてみませんか?