我正在尝试使用批处理脚本编辑快捷方式的属性。但快捷方式名称包含一个字符 ®,因此当我运行 changeproperties.bat 文件时,它无法正确读取文件名。我可以通过 powershell 完成相同的任务。
我的 powershell 脚本有下面一行并且它可以工作
$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©。
如何纠正这个问题。
Using a 批处理 + VBScript 混合 https://stackoverflow.com/a/9074483/1683264该解决方案可以让您规避任何批处理代码页问题,并且无需将 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)