我试图在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
答案 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"