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

Arm*_*ohn 5 windows directory batch-file junction

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

小智 11

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

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

这比打电话要快DIR /AL.

%%~aA得到"linkfilename"的属性,
一个9字符的字符串像d--------(目录),
d-------l到一个目录的链接,
或者--------l到一个文件的链接.

%Z:~8,1% 然后只抓取重新分析点属性.


Log*_*ldo 0

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

  • @David:不完全是,因为实际上要求管理权限是一个相当严格的要求。 (2认同)