2016-04-06 9 views
2

バッチスクリプトを使用してショートカットのプロパティを編集しようとしています。しかしショートカット名には文字®が含まれています。したがって、changeproperties.batファイルを実行すると、ファイル名を正しく読み取れません。私はpoweshellで同じ作業をすることができます。 私のPowerShellスクリプトがbelwoラインを持っており、それがショートカット名にテキストが登録されているショートカットプロパティを編集する方法

$shortCut = ("$desktop\testapp®.lnk") 
    $shell = New-Object -COM WScript.Shell 
    $shortcut = $shell.CreateShortcut($shortCut) ## Open the lnk 
    $shortcut.TargetPath = "C:\Users\Public\newtarget.bat" 
    $shortCut.Save() 

私はPowerShellを実行する権限がありません。これを実行するマシンで動作します。したがって、同様のバットファイルを書き込もうとしています。

echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT% 
    echo sLinkFile = "%USERPROFILE%\Desktop\testapp®©.lnk" >> %SCRIPT% 
    echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT% 
    echo oLink.TargetPath = "C:\Users\Public\newtarget.bat" >> %SCRIPT% 
    echo oLink.Save >> %SCRIPT% 

しかし、これは機能しません。私はそれを実行すると、このtestapp©のような特別な文字を追加したショートカットを作成します。

これを修正する方法。

答えて

2

あなたは最初にこのコードを実行し、それはあなたのために働くだろうその後ANSINotepad++でファイルを保存する必要があります。

@echo off 
( 
    echo Set oWS = CreateObject("WScript.Shell"^) 
    echo sLinkFile = "%USERPROFILE%\Desktop\testapp®.lnk" 
    echo Set oLink = oWS.CreateShortcut(sLinkFile^) 
    echo oLink.TargetPath = "C:\Users\Public\newtarget.bat" 
    echo oLink.Save 
)>%tmp%\%~n0.vbs 
cscript /nologo %tmp%\%~n0.vbs 
+0

それは私にとって完璧に機能しました。ありがとうございました。 – GAP

3

Batch + VBScript hybridソリューションを使用すると、バッチコードページの問題を回避したり、VBScriptコードをセカンダリスクリプトにエコーする必要がなくなります。

<!-- : Begin batch script 
@echo off 
cscript //nologo "%~f0?.wsf" 
exit /b 

----- Begin wsf script ---> 
<job><script language="VBScript"> 
    Set oWS = WScript.CreateObject("WScript.Shell") 
    userProfile = oWS.Environment("Process").Item("USERPROFILE") 
    sLinkFile = userProfile & "\Desktop\testapp®.lnk" 
    Set oLink = oWS.CreateShortcut(sLinkFile) 
    oLink.TargetPath = "C:\Users\Public\newtarget.bat" 
    oLink.Save 
</script></job> 
+0

スクリプトをありがとう。最初は同じ問題がありました。 Hackooのスクリプトが私の仕事でした。 – GAP

+0

@Gopichandanええ、私はそれをテストし、同じ問題を発見したので、私はそれを削除しました。嬉しいHackooのソリューションはあなたのために働いた! – rojo