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

Luc*_*jer 6 perl winapi junction

我有一个Perl脚本,需要删除包含其所有内容的目录.有时,此目录包含到另一个目录的联结点.如果我rmtree()天真地,rmtree()调用也将删除联结目标文件夹内的所有文件.我正在寻找一种不这样做的方法,而只是删除了交叉点.

非Perl解决方案也将受到赞赏.

小智 6

我只是在Google中键入了"联结点",然后找到了 http://en.wikipedia.org/wiki/NTFS_junction_point

命令提示符(cmd.exe)

  • Windows 2000或更高版本中的dir命令可识别联结点,而不是在目录列表中显示(使用dir和/ A或/ AL命令行开关).
  • 通常会影响普通目录中文件的任何命令在此处都会起作用.因此,不应使用命令del myjunction - 这将只删除目标目录中的所有文件.
  • 命令rmdir和move与联结工作正常,但移动的警告不会让联结移动到另一个卷(与Windows资源管理器相反,如上所述.)
  • rmdir命令是安全的,因为它只删除连接点,而不是目标文件.在使用命令行界面浏览目录时,可以删除文件,但与explorer不同,也可以删除目录(例如,使用rmdir/s dirname).
  • 使用带有/ d开关的linkd命令是删除连接点的安全方法.

从我所看到的,你可以,例如,使用dir和grep输出<JUNCTION>或使用Windows rmdir.我想你可以使用Perl via中的任何一个system.