创建包含unicode路径的快捷方式

时间:2017-04-09 11:39:06

标签: powershell unicode symlink shortcut

我试图在Windows 7中创建快捷方式,但在我尝试和一些谷歌之后,原来在PowerShell中无法实现。

问题:还有其他方法可以批量创建支持unicode路径和文件名的快捷方式吗?

尝试使用符号链接,但在unicode路径时它无效(返回文件不存在)。

New-Item -ItemType SymbolicLink -Path "C:\f[o]o♭\pr[o]file♭.txt" -Value "C:\b[a]r♭\pr[o]file♭.txt"

我使用的代码,但在unicode path,filename。

时没有用
$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($lnkpath)
$Shortcut.TargetPath = $tarpath
$Shortcut.Save()

谷歌搜索之一: Create shortcut with Unicode character

感谢您的及时回复,然后我试过了。

$tarpath = "C:\f[o]o♭\pr[o]file♭.txt"
$lnkpath = "C:\b[a]r♭\pr[o]file♭.txt"

$tarpath = $tarpath.Replace('[','`[')
$tarpath = $tarpath.Replace(']','`]')
$lnkpath = $lnkpath.Replace('[','`[')
$lnkpath = $lnkpath.Replace(']','`]'

# echo print $tarpath like this -> C:\b`[a`]r♭\pr`[o`]file♭.txt,
# but I'm not sure when it is the same at -Path $tarpath

New-Item -ItemType SymbolicLink -Path $tarpath -Value $lnkpath

1 个答案:

答案 0 :(得分:3)

每当您在内置cmdlet上看到-Path参数时,假设它支持wildcard globbing

这意味着[x]不是按字面解释,而是作为简单的字符类替换。在您的示例中,这意味着C:\f[o]o♭\pr[o]file♭.txt被解释为C:\foo♭\profile♭.txt,这就是为什么它抱怨目标路径不存在。

要解决此问题,请使用反引号(`)转义方括号:

New-Item -ItemType SymbolicLink -Path 'C:\f`[o`]o♭\pr`[o`]file♭.txt' -Value "C:\b[a]r♭\pr[o]file♭.txt"