2016-04-06 13 views
2

Kısayolun özelliklerini toplu iş komut dosyası kullanarak düzenlemeye çalışıyorum. Ancak kısayol adı bir karakter içerir. Bu yüzden changeproperties.bat dosyasını çalıştırdığımda dosya ismini doğru olarak okuyamıyor. Aynı görevi poweshell üzerinden yapabilirim. Benim powershell komut belwo çizgi vardır ve onuKısayol adının kayıtlı metin olduğu kısayol özellikleri nasıl düzenlenir ®

$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() 

i powershell çalıştırmak için izni olmaz bu çalışacaktır makine çalışır. Bu nedenle benzer yarasa dosyası yazmaya çalışıyor.

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% 

Ancak bu çalışmaz. Çalıştığımda, bu testapp © gibi ekstra eklenen özel karakter ile kısayol oluşturur.

Bu nasıl düzeltilir?

cevap

2

Önce Sonra bu kodu çalıştırmak ANSI ile Notepad++ ile dosya kaydetmek gerekir ve sizin için işleri olacak.

@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

Bu benim için mükemmel çalıştı. Teşekkür ederim. – GAP

3

Bir Batch + VBScript hybrid çözümünü kullanmak, herhangi bir Toplu kod sayfası sorununu atlatmanıza ve ayrıca VBScript kodunuzu ikinci bir komut dosyasına eklemenin gerekliliğini ortadan kaldırır.

<!-- : 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

Komut dosyası için teşekkür ederiz. İlkinde aynı sorun vardı. Hackoo'nun senaryosu benim için işi yaptı. – GAP

+0

@Gopichandan Evet, test ettim ve aynı sorunu buldum, o yüzden onu kaldırdım. Memnun Hackoo'nun çözümü senin için çalıştı! – rojo