代码之家  ›  专栏  ›  技术社区  ›  Lucas Meijer

如何在不遵循连接点的情况下删除Windows目录?

  •  6
  • Lucas Meijer  · 技术社区  · 15 年前

    我有一个Perl脚本,需要删除一个目录及其所有内容。 有时此目录包含到另一个目录的连接点。如果我 rmtree() 天真地 rmtree()。 调用还将删除连接的目标文件夹中的所有文件。我正在寻找一种方法来避免这种情况的发生,相反,只需拆除接头。

    非Perl解决方案也会受到赞赏。

    3 回复  |  直到 15 年前
        1
  •  6
  •   user181548    15 年前

    我刚在谷歌上输入了“连接点”,然后找到了 http://en.wikipedia.org/wiki/NTFS_junction_point

    命令提示(cmd.exe)

    • 迪尔 Windows 2000或更高版本中的命令 识别连接点,显示 而不是在 目录列表(使用dir /a或/al命令行开关)。
    • 任何 通常会影响的命令 普通目录中的文件将 在这里也一样。因此命令 不应使用del myjunction 这将删除中的所有文件 目标目录。
    • 命令 rmdir和move与 连接处,有移动时的警告 不会让路口移到另一个路口的 音量(与Windows相反 Explorer,如上所述。)
    • 这个 rmdir命令是安全的,因为它只 删除连接点,而不是 目标文件。在穿过的时候 带有命令行的目录 接口,可以删除文件,但 与资源管理器不同,目录还可以 删除(使用rmdir/s dirname 例子。)
    • 使用linkd命令 /D开关是一种安全的删除方法 连接点。

    从我所看到的,你可以,例如,使用 dir 并提高输出 <JUNCTION> 或者用窗户 rmdir . 我想您可以使用Perl Via中的任何一个 system .

        2
  •  4
  •   Glenn Slayden    8 年前

    要找出重分析点(或“连接点”,如果愿意的话):

    dir /a:l /b > myjunctions.txt
    

    将显示当前目录中的所有重分析点。您可以添加/s,但请注意,重分析点内的重分析点也将列出。

    假设myjunctions.txt包含行x:\subdir\foo。要删除它,请发出

    fsutil reparsepoint "x:\subdir\foo"
    

    还有Voice!你的连接点不见了,原来的目录也没动!

        3
  •  3
  •   Roland Pihlakas    13 年前

    FastCopy实用程序执行以下操作: http://ipmsg.org/tools/fastcopy.html.en

    我正在使用此程序复制或删除可能包含连接子文件夹的文件夹,以便连接目标保持不变。复制时,即使目标驱动器不同,也会正确复制连接点。

    WindowsExplorer至少在Windows7Ultimate中也可以按需要工作,同时删除连接目标保持不变。

    但是,在资源管理器中将连接作为子文件夹进行复制的文件夹仍然不能按预期工作-它实际上做了一些我可能还不能完全描述的事情:连接文件夹似乎被复制为普通文件夹,但其内容是空的。