我正在尝试创建一个脚本来运行我在特定项目中使用的所有工具(dor实例,gulp,phpstorm,php服务器等)。
我想运行快捷方式但不是可执行文件。我可以在Windows中看到两种可能的方法:
不幸的是,我都失败了:
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"
我做错了什么,还有另一种方法可以做我正在尝试的事情吗?
答案 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%