如何编辑快捷方式名称已注册文本的快捷方式属性®

How to edit shortcut properties where shortcut name has registered text ®

我正在尝试使用批处理脚本编辑快捷方式的属性。但是快捷方式名称包含一个字符 ® 因此当我 运行 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©。

如何更正此问题。

使用 Batch + VBScript hybrid 解决方案可以避免任何 Batch 代码页问题,并且无需将 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>

您应该首先使用 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