如果目录实际上是一个Junction,我怎样才能发现批处理文件?

时间:2011-01-30 19:43:52

标签: windows directory batch-file junction

我正在写一个批处理文件(.bat),我找不到一种方法来发现我有路径的给定目录是真实目录还是Junction(使用{{1在Windows 7上创建) }})。有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:11)

在批处理脚本中,您可以使用以下内容:

 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%然后只抓取重新分析点属性。

答案 1 :(得分:2)

我有这个小宝石,它将列出当前目录中的所有Junction及其目标:

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

答案 2 :(得分:0)

这是一种糟糕的技术,但fsutil reparsepoint query 文件的路径将失败(%ERRORLEVEL%将为1)如果文件不是联结并成功({{1}如果它是一个将是0)。另一个问题是%ERRORLEVEL%希望您成为管理员。此外,并非所有重新分析点都是目录连接。