![终止或关闭按顺序打开的 100 个 CMD 窗口](https://linux22.com/image/1502686/%E7%BB%88%E6%AD%A2%E6%88%96%E5%85%B3%E9%97%AD%E6%8C%89%E9%A1%BA%E5%BA%8F%E6%89%93%E5%BC%80%E7%9A%84%20100%20%E4%B8%AA%20CMD%20%E7%AA%97%E5%8F%A3.png)
我正在执行一个操作,将按顺序打开 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 中是如此。建议您小心谨慎,不要依赖未经测试的程序的结果。(如果您没有先前的结果,正确的程序是执行一个易于测试的较小任务,并确保在依赖结果之前彻底测试事物。)我意识到这些想法似乎很明显,我意识到实际测试在实践中可能比在理论上更难,但我指出这一点是因为这些程序通常非常重要,无论如何都值得一提。
祝你好运。