终止或关闭按顺序打开的 100 个 CMD 窗口

终止或关闭按顺序打开的 100 个 CMD 窗口

我正在执行一个操作,将按顺序打开 100 个 Dos 窗口(一个接一个地完成)。

每个窗口大约需要 2 小时来完成该过程,然后下一个窗口开始,依此类推。

我想在启动后立即关闭每个窗口。有什么方法可以自动关闭 DOS 窗口吗?

更新:我正在运行一个打开 DOS 窗口执行操作的软件,打开 DOS 窗口后,该软件会写入一个批处理文件。这种情况会发生大约 100 次,因为我将软件设置为执行 100 种不同的操作。我稍后将使用所有 100 个批处理文件。我需要自动关闭 DOS 窗口。我实际上不需要那些窗口,我只关心正在写入的批处理文件。希望这能澄清问题。

答案1

如果你使用GOTO EOF在执行的脚本末尾,你可以简单地将其替换为EXIT /B相反,这应该可以满足您的需要。

示例脚本

@ECHO ON 
SET RootDir=C:\Folder

FOR /F "TOKENS=*" %%A IN ('DIR /S /B "%RootDir%\*.bat"') DO START "" "%%~A"
EXIT /B

出口

退出当前批处理脚本、退出当前子程序或退出命令处理器(CMD.EXE),可选择设置错误级别代码。

句法

EXIT [/B] [exitCode]

钥匙

/B        When used in a batch script, this option will exit 
          only the script (or subroutine) but not CMD.EXE

退出代码

          Sets the %ERRORLEVEL% to a numeric number.
          If quitting CMD.EXE, set the process exit code no.

来源

答案2

有多种可能的方法,包括替代解决方案。

您是否还打开了其他您关心的“命令提示符”窗口?如果没有,请打开一个新的命令提示符并关闭所有命令提示符窗口:

TASKKILL /fi "imagename eq cmd.exe"

或者,为什么要创建 100 个窗口?正如 Vinayak 的评论所指出的,这可能没有必要。考虑制作一个多次使用 CALL 命令的批处理文件。例如:

@Echo Off Call File1.bat Call File2.bat Call File3.bat

如果你尝试同时运行所有这些操作而不是按顺序运行,则 start 命令可能会有用。考虑:

@Echo Off Start CMD /C File1.bat Start CMD /C File2.bat

注意:* 可能特别是在使用 START 命令时,最好谨慎使用 PATH。因此,如果“File1.bat”不在您的 PATH 或当前目录中,请不要只运行“File1.bat”。每当创建新窗口时,我都会习惯性地不相信我从我认为的当前目录中启动。这可能涉及CD更频繁地使用该命令(可能甚至比必要的更频繁,只是为了安全起见)。或者,如果您指定完整路径,则可以从其他目录运行许多命令。例如:

@Echo Off Start CMD /C %USERPROFILE%\mybats\File1.bat Start CMD /C %USERPROFILE%\mybats\File2.bat

如果目录/文件夹名称中有“空格”字符,则可能需要用引号将整个路径括起来。

@Echo Off Echo My home directory is %USERPROFILE% Pause Start "" CMD /C "%USERPROFILE%\mybats\File1.bat" Start "" CMD /C "%USERPROFILE%\mybats\File2.bat"

  • 如果您需要在 START 命令中使用引号,请小心。START 命令将第一组引号视为具有特殊含义的字符,这让很多人感到惊讶:设置窗口标题。这就是为什么上述示例在路径前显示一组引号的原因。
  • 我是根据记忆/知识写这个答案的。在写这个答案时,我还没有测试过,主要是因为我没有完全理解你的任务,所以我想不出一个非常有用的测试可以很好地适用于你的任务。然而,100 个批处理文件,每个文件两小时,就是 8 天 8 小时。所以我强烈建议在启动为期一周的活动之前花几分钟测试你的方法(使用一些简单/测试批处理文件)。
  • 旧版本的 Windows 有时会有一些奇怪的限制,尤其是在使用旨在提供与旧 MS-DOS 代码兼容性的功能时,而旧 MS-DOS 代码甚至充满了奇怪的限制。随着时间的推移,微软通过纠正许多与 DOS 相关的怪癖来改善这种情况。但是,我怀疑 100 个同时运行的窗口是否会破坏某些东西,至少在某些版本的 Windows 中是如此。建议您小心谨慎,不要依赖未经测试的程序的结果。(如果您没有先前的结果,正确的程序是执行一个易于测试的较小任务,并确保在依赖结果之前彻底测试事物。)我意识到这些想法似乎很明显,我意识到实际测试在实践中可能比在理论上更难,但我指出这一点是因为这些程序通常非常重要,无论如何都值得一提。

祝你好运。

相关内容