2017-04-09 96 views
0

我試圖在Windows 7中創建快捷方式,但在嘗試和幾個google之後,發現PowerShell中沒有辦法。創建包含unicode路徑的快捷方式

問:是否有其他方式批量創建支持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路徑,文件名時不起作用。

$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

你需要逃避'['和']':''' - 路徑C:\ F'【O '] o♭\ pr' [o'] file♭.txt''' –

+0

感謝您的及時回覆,然後我嘗試了。 $ 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 like this - >''C:\ b' [a']r♭\ pr' [o']文件♭.txt'',但我不知道什麼時候它是相同的在路徑$ tarpath 新項目-ItemType SymbolicLink-路徑$ tarpath -Value $ lnkpath – Foolenko

+0

評論中的反斜槓是一個噩夢, (http://stackoverflow.com/posts/43306251/edit)你的問題,而不是:-) –

回答

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"