如何正确删除目录连接点?

如何正确删除目录连接点?

我使用同一款游戏的多个安装(在 Windows 10 Home 上),以便更轻松地访问各种插件/用户配置。每个安装的子文件夹都是目录连接,指向原始游戏安装的子文件夹。它们的创建方式如下(从安装游戏的文件夹的父文件夹开始 - 在我的情况下是 C:\Program Files):

rem The original game is installed in the MyCarGame folder
mkdir MyCarGame2
cd MyCarGame2
mklink /J GameData ..\MyCarGame\GameData
mklink /J Maps ..\MyCarGame\Maps

如何正确删除目录连接点(在本例中为“MyCarGame2\GameData”和“MyCarGame2\Maps”),以确保我不会删除其中的文件/文件夹?

可以从文件管理器(例如 Windows Explorer、Total Commander 或 Free Commander)中删除它们吗?

此用户例如报告说他们删除了这样的虚拟文件夹,结果是源文件夹的内容被删除(在我的情况下是“MyCarGame\GameData”和“MyCarGame\Maps”)。

注意:这里有一个类似的问题:如何在 Windows 7 中使用命令行删除连接点

答案1

我不知道 Total Commander 和 Free Commander,但有两种方法可以删除连接而不删除源文件夹的内容。

Windows资源管理器,像删除其他文件夹一样进入MyCarGame2并删除连接点。它不会删除源,只会删除连接点。

命令提示符

cd MyCarGame2
rmdir GameData
rmdir Maps

电源外壳(谢谢Brian Low 的评论[1][2]):

cd MyCarGame2
cmd /c "rmdir GameData" 
cmd /c "rmdir Maps"

答案2

我知道这个帖子已经很旧了,但是对于任何在 2023 年研究这个问题的人来说,你可以使用以下 PS cmdlet 组合来删除连接点但不删除其内容:

$junction = Get-Item -Path <path_to_junction>
$junction.Delete()

该路径是实际的连接路径,而不是父路径。

这可以浓缩为:

(gi <path>).Delete()

答案3

使用 Powershell

首先确保它实际上是一个连接点:

(Get-ChildItem . -Force -Recurse | Where-Object { $_.LinkType -eq "Junction" -and $_.Attributes -match "ReparsePoint" }) | Select $_.FullName

然后通过添加:删除(全部)| Remove-Item -Force -Recurse

相关内容