2016-04-06 73 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的權限的機器。因此試圖編寫類似的bat文件。

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

你應該先保存您的文件,Notepad++ANSI 然後執行這些代碼,它會爲你的作品。

@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