如何更改符号链接中的驱动器?

如何更改符号链接中的驱动器?

其中一台计算机冒烟了,我已将 HD 连接到 USB 适配器以提取所有用户数据。

USB 驱动器显示为驱动器 G:,但所有符号链接都指向原始驱动器 C:,因此当我复制所有文件并按照符号链接时,我最终从我自己的驱动器 C: 复制数据

是否有命令 (或方法) 将所有符号链接更改为另一个驱动器?例如,更改符号链接C:\Users\Administrator\fileX.y以指向G:\Users\Administrator\fileX.y

答案1

我认为不能修改符号链接,只能重新创建它。这需要编写脚本或程序来扫描磁盘并重新创建符号链接。

这里有一个可能更简单的想法:创建一个虚拟机并将此物理驱动器 G:设置为其 C:磁盘。

VMware 和 VirtualBox 都支持物理/原始磁盘:

答案2

您不需要尝试修改所有链接,而是可以使用robocopy命令提示符来复制符号链接而不是其目标。

ROBOCOPY source\path destination\path /E /SL

此命令将以递归方式将所有目录和文件从源复制到目标(/E),并且不会复制符号链接的目标,而是复制链接本身(/SL

您可以使用 powershell 列出所有符号链接和目标。这回答StackExchange 上向您展示了如何操作。

dir 'Path\to\examine' -Recurse -Force | ?{$_.LinkType} | Select FullName,LinkType,Target

您也可以使用 powershell 覆盖现有链接。

New-Item -ItemType SymbolicLink -Path "Symbolic\Link\Path" -Target "New\Target\For\Link" -Force

因此,修改文件夹中所有链接的脚本将如下所示:

$directory = 'Path\to\your\links'
$links = dir '$directory' -Force | ?{$_.LinkType}
foreach ($link in $links)  
{
    $target = $link.Target.Replace('C:\','G:\')
    $path = $link.FullName
    New-Item -ItemType SymbolicLink -Path "$path" -Target "$target" -Force
}
dir '$directory' -Force | ?{$_.LinkType} | Format-Table FullName,Target

确保修改该$directory值并从管理员 powershell 提示符运行此命令。您也可以将-Recurse标志添加到命令中以查看子文件夹。dir

相关内容