其中一台计算机冒烟了,我已将 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