从 .bat 文件中关闭打开的 cmd 窗口打开应用程序并执行文件
Posted
技术标签:
【中文标题】从 .bat 文件中关闭打开的 cmd 窗口打开应用程序并执行文件【英文标题】:Close opened cmd window from .bat file open application and execute file 【发布时间】:2021-07-16 03:49:33 【问题描述】:我有一个 .bat 文件,它打开一个应用程序,然后执行一个在应用程序内运行作业的文件。我无法关闭任务在 Windows 任务调度程序中运行时打开的 cmd 窗口。
"C:\Proram Files (x86)\ \ \ Robot.exe" execute =f "S:\dept\ Team\ \ YearEndAudit\Main.xaml"
任何帮助将不胜感激。
问候,
杰夫
【问题讨论】:
请提供有关您如何在任务计划程序中运行 .bat 文件的详细信息(例如正在执行的确切命令行)。 也许是这个?start "" "%programfiles(x86)%\restofpath\Robot.exe" execute =f "S:\dept\ Team\rest of path\YearEndAudit\Main.xaml"
好吧,也许你应该检查你的路径……
【参考方案1】:
我可能误解了你,但我理解的是:
您正在使用 CMD 打开可执行文件,但无法关闭 之后的 CMD。我很确定这些信息量足以解决您的问题,但无论如何我们的数据很少,而且数据令人困惑。请尝试改进您的下一篇文章。
发生的情况是您可能只是将程序/脚本的名称放在 CMD 中,例如:
program.exe
这会导致程序依赖于 CMD 来运行,并且还会阻止窗口被关闭。可以在一切开头使用"start"来解决这个问题,比如:
start "" "X:\Path\program.exe" execute -f "everythingyouwants"
您可能需要在程序文件夹中,因为某些延迟执行的程序可能会将您的当前位置视为默认位置,并且可能找不到所需的依赖项。 如果您想留在当前所在的文件夹中,可以使用:
pushd "thepath\ofthe\program"
start program.exe
popd
另一种方法是在VBS中隐藏创建脚本的窗口,如:
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c X:\YOURSCRIPTPATH\YOURSCRIPTNAME.bat/cmd"
oShell.Run strArgs, 0, false
但是,如果路径也需要引号,我们可能会发生冲突。以上内容并不理想,但有时可能会有所帮助。
如果这些都不适合您,请告诉我们。
希望这会有所帮助, K.
【讨论】:
代码整个代码部分set local=%cd% cd "thepath\ofthe\prog...
并不理想,可以简单地重写为pushd "thepath\ofthe\prgram\"
然后start "" "program.exe"
然后popd
同样重要的是要注意start "" "program.exe ..
更好使用start
、start
的方式可能会将第一组双引号解释为标题,因此最好给出一个空标题。
但我保留了其中的一些,因为有些程序认为它们的当前位置是你的,这可能会在执行时产生干扰。
pushd
仍会更改到该位置,popd
返回到最后一个位置。自己尝试一下,只需复制并粘贴到cmd
,您就会看到结果。 cd & pushd %programfiles% & cd & popd & cd
但是,如果您正确引用并指定正确的输出/输入路径等,我从来没有遇到过任何干扰问题。它将始终有效。
我不经常使用 popd 或 pushd,我的脚本更通用,需要一个变量用于执行它的位置,因为当前位置 (%cd%) 可能随时消失.无论如何,我认为保持低水平的复杂性很重要,但无论如何我都会补充一点......
这可能是一个问题,尤其是对于一些旧游戏和脚本,因为它们不希望您从未知的地方调用它们。脚本甚至使用执行位置(例如 X:\ indows\System32)来搜索您的文件。因此,他们可能找不到它。这只是一个警告,他自己正在处理一个 .xaml 脚本,这可能会有所帮助。以上是关于从 .bat 文件中关闭打开的 cmd 窗口打开应用程序并执行文件的主要内容,如果未能解决你的问题,请参考以下文章