用嵌套文件夹中的相对符号链接替换快捷方式
Replace shortcut with relative symlink in nested folders
我需要帮助使用 PowerShell 将所有 Windows 快捷方式转换为相对软链接(符号链接)。
所有原始文件(快捷方式的目标)都在一个文件夹中,并且在其中还有另一个包含文件、快捷方式和其他文件夹(可以包含其他文件、快捷方式和文件夹)的文件夹。
因此,我正在寻找的是为每个快捷方式创建此命令(最终会有更多 ../
):
cmd /c 'mklink "path/shortcut.txt" "../file.txt"' && del "path/shortcut.txt.lnk"
通过这段代码,我可以获得快捷方式目标的绝对路径:
dir * -Include *.lnk -Recurse | ForEach-Object {
$sh = New-Object -ComObject WScript.Shell
$fullpath = $sh.CreateShortcut($_.FullName).TargetPath
}
有什么帮助吗?我怎样才能让它找到所需的路径和数量../
?
我想我找到了方法。这是脚本:
$obj = New-Object -ComObject WScript.Shell;
dir * -Include *.lnk -Recurse | ForEach-Object {
$file = $obj.CreateShortcut($_.FullName).TargetPath -Replace '.*\'
$name = $(Resolve-Path -Relative $_) -Replace '^\.\' -Replace "\.lnk$"
$rel = '';
for ($i=0; $i -le ([regex]::Matches($nomeok, '\' )).count; $i++) {
$rel = $rel + '..\'
}
cmd /c mklink "$name" "$($rel + $file)"
del "$($name + '.lnk')"
}
我需要帮助使用 PowerShell 将所有 Windows 快捷方式转换为相对软链接(符号链接)。 所有原始文件(快捷方式的目标)都在一个文件夹中,并且在其中还有另一个包含文件、快捷方式和其他文件夹(可以包含其他文件、快捷方式和文件夹)的文件夹。
因此,我正在寻找的是为每个快捷方式创建此命令(最终会有更多 ../
):
cmd /c 'mklink "path/shortcut.txt" "../file.txt"' && del "path/shortcut.txt.lnk"
通过这段代码,我可以获得快捷方式目标的绝对路径:
dir * -Include *.lnk -Recurse | ForEach-Object {
$sh = New-Object -ComObject WScript.Shell
$fullpath = $sh.CreateShortcut($_.FullName).TargetPath
}
有什么帮助吗?我怎样才能让它找到所需的路径和数量../
?
我想我找到了方法。这是脚本:
$obj = New-Object -ComObject WScript.Shell;
dir * -Include *.lnk -Recurse | ForEach-Object {
$file = $obj.CreateShortcut($_.FullName).TargetPath -Replace '.*\'
$name = $(Resolve-Path -Relative $_) -Replace '^\.\' -Replace "\.lnk$"
$rel = '';
for ($i=0; $i -le ([regex]::Matches($nomeok, '\' )).count; $i++) {
$rel = $rel + '..\'
}
cmd /c mklink "$name" "$($rel + $file)"
del "$($name + '.lnk')"
}