【问题标题】:Generated script doesn't create shortcuts生成的脚本不会创建快捷方式
【发布时间】:2015-08-16 17:52:01
【问题描述】:

我的 Windows 8 PC 似乎不想使用 VBScript 创建快捷方式。 问题是,它以某种方式无法保存。这似乎是只有我的电脑才有的问题。

我正在尝试使用 Batch 创建一个临时 VBScript,我得到的输出是:

C:\Users\ALBERT~1\AppData\Local\Temp\11338-3520-31784-27073.vbs(5, 1) WshShortcut.Save:快捷方式 "C:\Users\AlbertMøller\Downloads\Desktop\ASKontrolpanel.lnk" 无法 得救。

这是我的 VBScript 代码:

set SCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"
echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT%
echo sLinkFile = "Desktop\ASKontrolpanel.lnk" >> %SCRIPT%
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT%
echo oLink.TargetPath = "%ProgramData%\AutoShutdown\AutomaticShutdown.bat" >> %SCRIPT%
echo oLink.Save >> %SCRIPT%
cscript /nologo %SCRIPT%
del %SCRIPT%

它似乎适用于我测试过的所有其他计算机,即 3。 我尝试使用管理员权限打开它,但它仍然不起作用。

【问题讨论】:

  • Downloads 中是否存在 Desktop 目录?你的意思可能是echo sLinkFile = "%userprofile%\Desktop\ASKontrolpanel.lnk" >> %SCRIPT%
  • 也不起作用 - 已经尝试过(现在再次尝试)。好像是我电脑的问题。
  • Salt this PowerShell one-liner to taste 看看它是否给你同样的行为。
  • 我是 VBS 的菜鸟...所以我需要把它放在哪里,我需要编辑什么?
  • set Scriptdel %SCRIPT% 之间的所有内容(基本上是整个该死的东西)替换为以下内容:powershell "$s=(New-Object -COM WScript.Shell).CreateShortcut('%userprofile%\Desktop\ASKontrolpanel.lnk');$s.TargetPath='%ProgramData%\AutoShutdown\AutomaticShutdown.bat';$s.Save()"

标签: batch-file vbscript lnk


【解决方案1】:

此 Vbscript 可以在您的桌面上创建一个快捷方式,询问您是否要关闭计算机。

Option Explicit
Dim MyScriptPath 
MyScriptPath = WScript.ScriptFullName
Call Shortcut(MyScriptPath,"Shutdown the computer")
Call AskQuestion()
'**********************************************************************************************
Sub Shortcut(PathApplication,Name)
    Dim objShell,DesktopPath,objShortCut,MyTab
    Set objShell = CreateObject("WScript.Shell")
    MyTab = Split(PathApplication,"\")
    If Name = "" Then
        Name = MyTab(UBound(MyTab))
    End if
    DesktopPath = objShell.SpecialFolders("Desktop")
    Set objShortCut = objShell.CreateShortcut(DesktopPath & "\" & Name & ".lnk")
    objShortCut.TargetPath = Dblquote(PathApplication)
    ObjShortCut.IconLocation = "%SystemRoot%\system32\SHELL32.dll,-28"
    objShortCut.Save
End Sub
'**********************************************************************************************
Sub AskQuestion()
    Dim Question,Msg,Title
    Title = "Shutdown the computer"
    Msg = "Are you sure to shutdown the computer now ?"& Vbcr &_
    "If yes, then click [YES] button "& Vbcr &_
    "If not, then click [NO] button"
    Question = MsgBox (Msg,VbYesNo+VbQuestion,Title)
    If Question = VbYes then
        Call Run_Shutdown(30)
    else
        WScript.Quit()
    End if
End Sub
'**********************************************************************************************
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'**********************************************************************************************
Sub Run_Shutdown(N)
    Dim ws,Command,Execution
    Set ws = CreateObject("wscript.Shell")
    Command = "Cmd /c Shutdown -s -t "& N &" -c "& DblQuote("Save your work because your PC will shut down in "& N &" seconds")
    Execution = ws.run(Command,0,True)
End sub
'**********************************************************************************************

编辑:2015 年 4 月 6 日

在本例中,您应将 "e:\Temp\t.bat" 替换为批处理文件的路径,并将 "Hackoo" 替换为批处理文件的名称快捷方式。

Call Shortcut("e:\Temp\t.bat","Hackoo")
'*********************************************************************************
Sub Shortcut(PathApplication,Name)
    Dim objShell,DesktopPath,objShortCut,MyTab
    Set objShell = CreateObject("WScript.Shell")
    MyTab = Split(PathApplication,"\")
    If Name = "" Then
        Name = MyTab(UBound(MyTab))
    End if
    DesktopPath = objShell.SpecialFolders("Desktop")
    Set objShortCut = objShell.CreateShortcut(DesktopPath & "\" & Name & ".lnk")
    objShortCut.TargetPath = Dblquote(PathApplication)
    ObjShortCut.IconLocation = "%SystemRoot%\system32\SHELL32.dll,-25"
    objShortCut.Save
End Sub
'*********************************************************************************
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'*********************************************************************************

【讨论】:

  • 这不是我真正想要的...您的第一个答案 ^ 太棒了!我只需要知道在哪里放置除桌面以外的其他目标路径,我已准备好将其标记为已回答。
【解决方案2】:

试试这个代码,告诉我它是否适合你?

@echo off
mode con cols=87 lines=5 & color 9B
Title Generer le vbscript pour la creation du raccourci sur le bureau by Hackoo
echo Generer le vbscript pour la creation du raccourci
Timeout /T 2 > Nul
(
echo Call Shortcut("%windir%\system32\calc.exe","Calculatrice"^)
echo ^'**********************************************************************************************^)
echo Sub Shortcut(CheminApplication,Nom^)
echo    Dim objShell,DesktopPath,objShortCut,MyTab
echo    Set objShell = CreateObject("WScript.Shell"^)
echo    MyTab = Split^(CheminApplication,"\"^)
echo    If Nom = "" Then
echo    Nom = MyTab(UBound^(MyTab^)^)
echo    End if
echo    DesktopPath = objShell.SpecialFolders("Desktop"^)
echo    Set objShortCut = objShell.CreateShortcut(DesktopPath ^& "\" ^& Nom ^& ".lnk"^)
echo    objShortCut.TargetPath = Dblquote^(CheminApplication^)
echo    ObjShortCut.IconLocation = "Winver.exe,0"
echo    objShortCut.Save
echo End Sub
echo ^'**********************************************************************************************
echo ^'Fonction pour ajouter les doubles quotes dans une variable
echo Function DblQuote(Str^)
echo    DblQuote = Chr(34^) ^& Str ^& Chr^(34^)
echo End Function
echo ^'**********************************************************************************************
) > Shortcutme.vbs
echo Execution du vbscript pour la creation du raccourci de la calculatrice sur le bureau
Start /Wait Shortcutme.vbs
echo Suppression du Vbscript
Del Shortcutme.vbs
echo Termine
Pause > Nul

【讨论】:

  • 这行得通...实际上令人惊讶....但是,我的代码应该可以正常工作 - 只是不能在 my 电脑上。不过,这确实……这很烦人,哈哈。任何线索为什么你的工作,而不是我的?
  • 您是说此代码仅适用于您 PC 上安装的 Windows 8 并且适用于不同机器或其他机器上的其他操作系统吗?
  • 这段代码,你的代码在我的电脑(Windows 8)上运行得很好,但是上面的主要问题中的附加代码在这台电脑上不起作用,但似乎在所有其他我都试过了。虽然你的工作,但我不知道我可以取出什么并使它成为我的路径....我想要一个简单的小 vbs 代码,使 xxxx 的快捷方式到 xxxx 目的地。不过,我真的很想知道为什么我在问题 ^ 中附加的代码在这台电脑上不起作用...:/
  • 我应该在哪里放置 .lnk 的目标路径..?
猜你喜欢
  • 2015-05-17
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多