2016-09-07 3 views
0

ショートカットのファイル名とターゲットパスに発音区別記号を追加する方法を理解できません。どのように発音記号をショートカットパスに入れますか?

$ws_shell = New-Object -COMObject WScript.Shell 
$shortcut = $ws_shell.CreateShortcut("Yū-Sibu.lnk") 
$shortcut.TargetPath = "Yū-Sibu" 

このコードは、パス「Yu-Sibu.lnk」とターゲット「Yu-Sibu」を含むショートカットを出力します。

でも、Write-Host $shortcut.TargetPathは「ゆうすべ」を返します。

+0

はこれを参照してください。http://stackoverflow.com/questions/1056692/how-to-encode-unicode-character-codes-in-a-powershell-string-リテラル – Avshalom

+0

今日でも、ファイル名に非ASCII文字を使用することを強くお勧めします。 – vonPryz

+0

十億人の人々がASCII以外のファイル名を使用しているため、完璧です。この問題に関しては、あなたは恐竜の恐竜であるWScriptを使用しています。 Unicodeショートカットを作成するC#の例を参照してください。lnk:[Unicode文字でショートカットを作成](https://stackoverflow.com/a/13542488) – wOxxOm

答えて

0

WScriptは古く、ユニコードを適切に処理できないため、新しいShellLink interfaceを使用します。既存のlnkファイルのみを変更できるので、まずWScriptを使用して一時的に空のlnkを作成します。

function Create-Lnk(
    [Parameter(Mandatory=$true)] 
    [ValidateScript({Test-Path -IsValid -Literal $_})] 
    [string]$lnk, 

    [Parameter(Mandatory=$true)] 
    [ValidateScript({Test-Path -Literal $_})] 
    [string]$target, 

    [string]$arguments = '', 
    [string]$description = '', 
    [string]$workingDir = '', 

    [ValidateSet('normal', 'minimized', 'maximized')] 
    [string]$windowState 
) { 
    $tmpName = [IO.Path]::GetRandomFileName() + '.lnk' 
    $tmpFolder = $env:TEMP 
    $tmpFullPath = Join-Path $tmpFolder $tmpName 

    $ws_shell = New-Object -com WScript.Shell 
    $shortcut = $ws_shell.CreateShortcut($tmpFullPath) 
    $shortcut.Save() 

    $shellApp = New-Object -com Shell.Application 
    $shellLink = $shellApp.NameSpace($tmpFolder).ParseName($tmpName).GetLink() 

    $shellLink.Path = $target 
    $shellLink.Arguments = $arguments 
    $shellLink.Description = $description 
    $shellLink.WorkingDirectory = $workingDir 
    $shellLink.ShowCommand = switch($windowState){'minimized'{2} 'maximized'{3} default{1}} 
    $shellLink.Save() 

    move -literal $tmpFullPath $lnk -force 
} 

例:

Create-Lnk -lnk (Join-Path ([Environment]::GetFolderPath('Desktop')) 'пишижиши.lnk') ` 
      -target 'D:\lost in translation\なんでやねん!.txt' ` 
      -description '¿Por qué dices eso?' 
関連する問題