我有几个应用程序往往需要同时打开,而不是仅依赖于Startup文件夹来同时启动它们(因此,如果一天中的某些时间关闭某些应用程序,我可以重新打开所有应用程序) )我创建了一个充满快捷方式的文件夹,其方式类似于Linux的运行级别启动链接。因此,在该文件夹中,我具有类似于以下内容的快捷链接:
我创建了一个批处理文件,该文件将遍历所有与命名格式匹配的链接并启动它们。该批处理文件的内容当前为:
@FOR /F "usebackq delims==" %%f IN (`dir /b "S* - *.lnk"`) DO "%%f"
它会启动我尝试的大多数链接,但是有些链接会启动并等待进程退出,从而阻止进一步的脚本打开。 是否可以执行快捷方式而无需等待批处理文件中的进程退出? 还是这是一个失败的原因,我应该寻找一个Powershell解决方案?
到目前为止我尝试过的事情:
@FOR /F "usebackq delims==" %%f IN (`dir /b "S* - *.lnk"`) DO START /B /I "%%f"
它在后台进程中启动命令提示符,但从不实际启动链接的目标。
@FOR /F "usebackq delims==" %%f IN (`dir /b "S* - *.lnk"`) DO %comspec% /k "%%f"
它启动第一个链接,但是等待。
最佳答案
尝试第一种方法,但是将/B
从START
命令中删除。这样,该过程将在新窗口中启动,因此不应使其等待。
使用/B,它将在同一窗口中启动该过程。因此,如果该过程由于某种原因而阻塞,那么您将无法获得控制权,直到它完成为止。例如,考虑以下批处理文件foo.bat(为此您需要 sleep 命令,因为我有cygwin,所以它附带了):
echo hi
sleep 5
在命令提示符下,如果您键入
START /B foo.bat
您会注意到,在 sleep 完成之前,控件不会返回到命令提示符。但是,如果执行此操作:
START foo.bat
然后控件立即返回(因为foo.bat在新窗口中启动),这就是您想要的。
关于batch-file - 执行批处理文件中的快捷链接,而不必等待应用程序退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6139365/