あなたには3つの方法があります
解決策 1: fsutil リパースポイント
次のように、 symlink/junction を使用して成功fsutil reparsepoint query
を確認します。%errorlevel%
set tmpfile=%TEMP%\%RANDOM%.tmp
fsutil reparsepoint query "%DIR%" >"%tmpfile%"
if %errorlevel% == 0 echo This is a symlink/junction
if %errorlevel% == 1 echo This is a directory
fsutil reparsepoint query
標準ディレクトリでは何もできず、エラーがスローされるため、これは機能します。しかし、許可エラーも原因%errorlevel%=1
です!
解決策 2: dir + 検索
次のように、親ディレクトリのリンクを一覧表示しdir
、出力をフィルターして、成功find
を確認します。%errorlevel%
set tmpfile=%TEMP%\%RANDOM%.tmp
dir /AL /B "%PARENT_DIR%" | find "%NAME%" >"%tmpfile%"
if %errorlevel% == 0 echo This is a symlink/junction
if %errorlevel% == 1 echo This is a directory
解決策 3: for (最高)
これはリンクを示しているため、ディレクトリの属性を取得しfor
、最後を確認します。これはよりスマートで最良のソリューションだと思います。
for %i in ("%DIR%") do set attribs=%~ai
if "%attribs:~-1%" == "l" echo This is a symlink/junction
参考までに、このソリューションは に依存していない%errorlevel%
ため、「有効なエラー」も確認できます。
ソース