如何在Windows中使用脚本运行多个快捷方式(.lnk文件)?

时间:2016-04-13 07:29:22

标签: batch-file vbscript cmd wsh

我正在尝试创建一个脚本来运行我在特定项目中使用的所有工具(dor实例,gulp,phpstorm,php服务器等)。

我想运行快捷方式但不是可执行文件。我可以在Windows中看到两种可能的方法:

  1. VBSCRIPT
  2. cmd.exe的
  3. 不幸的是,我都失败了:

    1)WshShell fire .lnk文件,我无法找到另一种方法:

    要这样做,我正在尝试编写.cmd文件或.vbs 但是,我在各个方面都遇到了问题。

    Dim WshShell
    
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "notepad.exe" ' Works alright
    WshShell.Run "C:\Users\eugene\Desktop\gulp EngMe.lnk" ' got an Exception: Unknown Exception
    

    2).cmd脚本等待关闭之前启动的应用

    @rem urls and filesystem shortcuts start alright:
    "C:\Users\eugene\Desktop\8000.url"
    "C:\Users\eugene\Desktop\project_folder.lnk"
    
    @rem the following two commands are starting sequentially, when the previous one has closed.
    "notepad.exe"
    @rem shortcut to %windir%\system32\notepad.exe:
    "C:\Users\eugene\Desktop\Notepad_.lnk"
    

    我做错了什么,还有另一种方法可以做我正在尝试的事情吗?

2 个答案:

答案 0 :(得分:2)

尝试使用powershell进行脚本编写。

查看问题 - Execute shortcuts like programs

使用invoke-item查看Mark Schill的答案,以启动类似程序的.lnk文件。

这可能是解决脚本挑战的最佳方法。

答案 1 :(得分:1)

您可以查看能够读取.lnk文件属性的shortcutjs.bat。这样,您将在正确的工作目录中执行当前目录中的所有.lnk个文件:

@echo off

for %%# in (*.lnk) do (
    call :executeShortcut "%%#"
)

exit /b %errorlevel%
:executeShortcut - %1 - shortcut to execute
setlocal enableDelayedExpansion
for /f "tokens=1,* delims=:" %%a in ('call shortcutjs.bat -examine %1') do (
    if /i "%%a" equ "Target" (
        set "target=%%b"
        set "target=!target:~1!"
    )

    if /i "%%a" equ "Working Directory" (
        set "workdir=%%b"       
        set "workdir=!workdir:~1!"
    )
)

start "%target%" /d "%workdir%" /wait /b "%target%"
exit /b %errorlevel%