バッチファイルがあり、バッチファイル内で特定のディレクトリを検索し、最初のディレクトリ/ファイルの名前である変数に保存します。これが大まかに私がやっていることです:
FOR /d %%F IN (%INSTALL_DIR%\dir\*) DO (
set NAME=%%~xnF
set NAME_DIR=%INSTALL_DIR%\dir\%NAME%
goto :break
)
コマンドラインからこれを実行すると、完全に機能し、NAME_DIR は正しい値を取得します。ただし、ファイルをダブルクリックすると、NAME 変数が空白になります。したがって、NANE_DIR は %INSTALL_DIR%\dir に設定されます。なぜこれが起こるのか、どうすれば修正できますか?
より明確にするために、コマンドラインから、これは、エコーされたときに NAME と NAME_DIR が等しいものです。
NAME: dir1.3.8
NAME_DIR: D:\root\path\to\dir\dir1.3.8
これは、ダブルクリックしたときにエコーされるものです。
NAME:
NAME_DIR: D:\root\path\to\dir