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