从 .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 ..更好使用startstart 的方式可能会将第一组双引号解释为标题,因此最好给出一个空标题。 但我保留了其中的一些,因为有些程序认为它们的当前位置是你的,这可能会在执行时产生干扰。 pushd 仍会更改到该位置,popd 返回到最后一个位置。自己尝试一下,只需复制并粘贴到cmd,您就会看到结果。 cd & pushd %programfiles% & cd & popd & cd 但是,如果您正确引用并指定正确的输出/输入路径等,我从来没有遇到过任何干扰问题。它将始终有效。 我不经常使用 popd 或 pushd,我的脚本更通用,需要一个变量用于执行它的位置,因为当前位置 (%cd%) 可能随时消失.无论如何,我认为保持低水平的复杂性很重要,但无论如何我都会补充一点...... 这可能是一个问题,尤其是对于一些旧游戏和脚本,因为它们不希望您从未知的地方调用它们。脚本甚至使用执行位置(例如 X:\ indows\System32)来搜索您的文件。因此,他们可能找不到它。这只是一个警告,他自己正在处理一个 .xaml 脚本,这可能会有所帮助。

以上是关于从 .bat 文件中关闭打开的 cmd 窗口打开应用程序并执行文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从作为wpf mvvm模式中的窗口打开的视图模型中关闭用户控件?

winform中关闭退出和打开新窗口的几种方式

如何在cmd中关闭Mysql

BAT 文件:打开新的 cmd 窗口并在其中执行命令

打开“模态”窗口并在基于选项卡组的应用程序中关闭

如何在Jmeter webdriver Sampler中关闭新打开的窗口。