5

バッチ ファイル (.bat) を作成していますが、特定のディレクトリへのパスが実際のディレクトリであるかジャンクション (Windows 7 で を使用して作成) であるかを検出する方法が見つかりませんでしたmklink /j。誰かが私を正しい方向に向けることができますか?

4

3 に答える 3

12

バッチ スクリプトでは、次を使用できます。

 SET Z=&& FOR %%A IN (linkfilename) DO SET Z=%%~aA
 IF "%Z:~8,1%" == "l" GOTO :IT_A_LINK

これは を呼び出すよりも高速ですDIR /AL

%%~aA、「linkfilename」、(ディレクトリ) の
ような 9 文字の文字列、 またはディレクトリへのリンク、 またはファイルへのリンクの属性を取得します。 d--------
d-------l
--------l

%Z:~8,1%次に、再解析ポイント属性のみを取得します。

于 2011-03-01T10:47:36.313 に答える
3

現在のディレクトリ内のすべてのジャンクションとそのターゲットをリストするこの小さな宝石があります。

for /F "delims=;" %j in ('dir /al /b') do @for /F "delims=[] tokens=2" %t in ('dir /a ^| findstr /C:"%j"') do @echo %j :: %t

出力例:

Application Data :: C:\Users\AB029076\AppData\Roaming
Cookies :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Cookies
Local Settings :: C:\Users\AB029076\AppData\Local
My Documents :: C:\Users\AB029076\Documents
NetHood :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Network Shortcuts
PrintHood :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
Recent :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Recent
SendTo :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\SendTo
Start Menu :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Start Menu
Templates :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Templates
TestLink :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Network Shortcuts
于 2014-06-05T14:53:23.033 に答える
0

これはお粗末な手法ですが、ファイルへのfsutil reparsepoint query パスは、ファイルがジャンクションでない場合は失敗し ( %ERRORLEVEL%1 になります)、ジャンクションである場合は成功します ( %ERRORLEVEL%0 になります)。これに関するもう1つの問題はfsutil、管理者になりたいということです。さらに、すべての再解析ポイントがディレクトリ ジャンクションであるとは限りません。

于 2011-01-30T19:53:45.203 に答える