我有一个文件夹,其中包含指向位于不同目录和驱动器中的文件的快捷方式。我想将指向的文件(而不是快捷方式文件本身)复制到单个目标文件夹。
我可以使用 Windows(XP、Vista、7)、文件管理器或某些实用程序来执行此操作吗?
我听说你可以用各种多步骤自定义脚本来实现这一点。但是,我听说有一种只需单击一下即可实现这一点的方法,而不必每次都编写自定义脚本,无论快捷方式指向哪里,我都可以选择快捷方式组并执行复制操作来获取它们指向的文件。然后,我可以将实际文件(而不是快捷方式)粘贴或以其他方式放入一个目录中。
手动找到快捷方式指向的每个文件并将它们逐个复制到目标文件夹将非常耗时。
请注意,我之前在互联网上看到过这个问题,但没有看到好的答案。
答案1
我认为答案是否定的,因为快捷方式实际上并不是像 Linux 中那样的符号链接。符号链接的概念是作为 NTFS 5.0 的一部分引入的,但它们适用于目录,而不是文件。Windows 7 中的情况可能有所改变,我承认我对此一无所知。 炮弹休克有一篇关于 Windows 符号和硬链接的好文章。
如果能证明这个问题是错误的,那就太酷了,因为这是一个我希望在工作中解决的问题!
答案2
我发现了一种非常简单的方法来复制快捷方式指向的文件而不是快捷方式本身:
将快捷方式的选择添加到 ZIP(通过 shell 扩展)。然后原始文件会自动压缩,而不是快捷方式。
将 ZIP 文件的内容提取到您喜欢的位置可以完美而快速地完成工作。
答案3
在 PowerShell 中这很简单。
使用 PowerShell 复制 Windows 快捷方式 (*.lnk) 的目标
(修改自http://windowsitpro.com/powershell/working-shortcuts-windows-powershell)
1)创建以下文件(Powershell脚本):
====== file Get-Shortcut.ps1============
begin
{
$WshShell = New-Object -ComObject WScript.Shell;
}
process
{
$WshShell.CreateShortcut($_)
}
====== end file Get-Shortcut.ps1============
2)设置执行策略来运行脚本
有多种方法可以做到这一点。一种方法是:
以管理员身份运行 powershell
绕过 Set-ExecutionPolicy
(完成后,将其设置回来,例如“Set-ExecutionPolicy Default”)
3)在 PowerShell 中运行此循环
foreach ($lnk in Get-ChildItem C:\FromDir\\*.lnk -ErrorAction SilentlyContinue | .\Get-Shortcut.ps1)
{
echo $lnk.targetpath
copy $lnk.targetpath C:\ToDir
}
答案4
作为替代解决方法,我发现 Microsoft Groove 非常有用。可以将文件作为临时占位符(如 zip 文件)放入 Groove 工作区。然后将文件从 Groove 工作区拖放到 Windows 资源管理器中的目标文件夹中。