让命令提示符启动记事本等应用程序并阻止直到它关闭

Pys*_*sis 4 windows script batch

我有一个批处理脚本,我基本上希望它向用户显示一个记事本窗口,其中打开了一个配置文件,供用户在每次运行脚本时进行编辑,并且我希望命令提示符等到该程序关闭才能继续执行,并运行使用该配置文件的程序。

我想这样做是因为我不想使用“set /P”命令样式在批处理脚本中获取用户输入,并且必须设置解析读取和写入到有许多值要检查的配置文件。

我相信在 Windows 上执行任何可执行程序时的标准行为是“exe”文件,它将在自己的进程中打开程序并立即控制回到脚本/命令提示符。对于“bat”和“cmd”脚本文件,它将执行脚本并等待直到控制权返回到第一个脚本或命令提示符。这应该是至少使用“CALL”命令调用另一个脚本或直接调用它时的行为。

现在在 Linux 上,我相信可执行内容的默认行为是可以没有扩展名的本机机器代码和“sh”文件之类的脚本,以阻塞方式执行,除非您指定与号(“&”)字符在输入线上的某个地方。

所以我试图在 Windows 上实现阻塞行为,因为它在 Linux 上更容易实现,并且希望关闭程序以触发原始脚本继续,或者将控制权返回到命令提示符。

Jos*_*efZ 6

您可以使用任一start命令(注意/B /WAIT开关顺序)

start "" /B /WAIT notepad.exe "somefile"
Run Code Online (Sandbox Code Playgroud)

或者干脆

notepad.exe "somefile"
Run Code Online (Sandbox Code Playgroud)

按照上面的链接:

当您运行 32 位图形用户界面 ( GUI) 应用程序时, cmd在返回命令提示符之前不等待应用程序退出。如果您从命令脚本运行应用程序,则不会发生此行为

编辑关于卡兰的评论:为什么需要 /B?

/B 无需打开新的命令提示符窗口即可启动应用程序。

  • 说实话:如果您运行图形用户界面应用程序,那么即使省略了开关,也不会打开新的命令提示符窗口/B
  • 另一方面,如果您运行命令行工具,省略/B开关会导致在新的命令提示符窗口中运行该工具,该窗口将在结束立即关闭并且所有输出都将丢失

因此,我将这些/B /WAIT开关一起使用作为一般原则:无论启动程序的配置如何,都保持相同的行为,并且不考虑它......

使用示例和来自 StackOverflow 的更多链接/B /WAIT开关顺序进行补充:不起作用(参数被忽略)而起作用...start /WAIT /B/waitstart /B /WAIT