在 Windows 7 中检查符号链接指向的位置

在 Windows 7 中检查符号链接指向的位置

在 Windows 7 中,如何检查文件是否为符号链接、文件夹是否为连接点,以及如何检查它们指向的位置(如果它们是符号链接/连接点)。在资源管理器和命令行中。

当您想要制作文件夹树的精确副本时,拥有一种从命令行执行此操作的方法非常重要,以便知道如何在另一台计算机上复制符号链接。

如果我右键单击一个文件并检查“属性”,我找不到任何表明它是符号链接的迹象。

答案1

dir 命令 dir /a可以这样做:

2012-12-26  09:30 PM    <DIR>          .
2012-12-26  09:30 PM    <DIR>          ..
2012-12-26  09:30 PM                 0 a.txt
2012-12-26  09:30 PM    <SYMLINK>      link.txt [a.txt]

或者,您可以使用 Windows 资源管理器:

Right click column, More, Link Target

答案2

复制自堆栈溢出,我刚刚用了这一行,而且有效

fsutil reparsepoint query "folder name" | find "Symbolic Link" >nul && echo symbolic link found || echo No symbolic link

解释

微软关于 FSUtil :执行与文件分配表 (FAT) 和 NTFS 文件系统相关的任务,例如管理重新解析点、管理稀疏文件或卸载卷。如果不带参数使用,fsutil 将显示受支持的子命令列表。

对于我们的使用,我们只关心它是否输出一行包含“符号链接”的行,如果它是符号的,那么我们然后find,如果find成功,我们输出一件事,如果没有,我们输出其他东西。

笔记

  • 如果路径中有空格,则需要用引号括住文件夹名称。
  • 无论文件夹是否存在或是不是符号链接,它都会给出相同的输出,请谨慎使用。

答案3

使用 PowerShell,至少在 Windows 操作系统上,您可以在任何给定的目录中找到符号链接,例如以下内容:

Get-ChildItem 'C:\nodejs\bin\' | Where-Object {$_.LinkType -eq 'SymbolicLink'}

更简洁的替代方法是使用Get-ChildItem别名ls

ls 'C:\nodejs' -Attributes ReparsePoint -Recurse

您可以通过以下任一方式获取有关符号链接的相关信息:

获取文件项并输出其目标属性。目标是符号链接的“值”。此外,在操作系统之间并列时,用于创建符号链接的方法或命令签名,“目标”、“路径”和/或“值”的参数名称可能与不同操作系统上的另一个方法签名具有不同的含义。

E:\AIT> Get-Item -Path 'C:\nodejs\bin\ionic.cmd' | Select-Object -ExpandProperty Target
E:\AIT\out\dependency_symlink.cmd

获取文件项并输出其LinkType 属性。LinkType 值为 SymbolicLink 的项目意味着它是象征性的。

E:\AIT> Get-Item -Path 'C:\nodejs\bin\ionic.cmd' | Select-Object -ExpandProperty LinkType
SymbolicLink

获取文件项并输出其Mode 属性l。Mode值中包含 的项目表示它是一个符号链接。

E:\AIT> Get-Item -Path 'C:\nodejs\bin\ionic.cmd' | Select-Object -ExpandProperty Mode
-a---l

获取文件项并输出其Attributes 属性. 具有 ReparsePoint 值的项目或许表示符号链接。

E:\AIT> Get-Item -Path 'C:\nodejs\bin\ionic.cmd' | Select-Object -ExpandProperty Attributes
Archive, ReparsePoint

答案4

不要用它fsutil来检查某个项目是否是符号链接。起初因为 errorlevel 有错误,所以有时它会停留在 0 并且将真实文件夹视为符号链接。Errorlevel 不可信。

存在一个问题,find因为find "Symbolic Link"在英语中这是可能的,但在其他语言中却不行。

好的方法是从属性中搜索:

for %%i in ("%file_to_test%") do set attribute=%%~ai
set attribute=%attribute:~8,1%
if "%attribute%" == "l" (
    echo It's a symlink!
) else (
    echo Damned! It's real!
)

%a 获得的属性是“drahscotlep”,“l”代表符号链接。

相关内容