2016-04-06 5 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 Да, я протестировал его и нашел ту же проблему, поэтому я просто удалил ее. Решение Glad Hackoo работало для вас! – rojo

Смежные вопросы