从脚本中退出 Windows 终端交互模式
Posted
技术标签:
【中文标题】从脚本中退出 Windows 终端交互模式【英文标题】:Exit windows terminal interactive mode from within a script 【发布时间】:2013-12-06 00:50:04 【问题描述】:设置是这样的:
init.bat 做了一些事情,然后调用python app.py -i
。
app.py 是程序的核心,根据用户输入,它最终可能会在终端上运行各种程序。
大多数命令都以用户继续输入命令的方式结束,但还有其他命令我想在完成任务后关闭终端。
例子:
用户输入命令:>>> dostuff
,完成后关闭终端。
app.py 处理它:
def dostuff():
#here's the issue.
#i want it to run a program and close the terminal
#but since it's on interactive mode, it will stay open after processing the command.
print('doing some stuff')
os.system('.\stuff.bat')
# exits...
stuff.bat:
@echo i'm gonna do some stuff and close the terminal
rem ...stuff
rem ...stuff
:: exits...
此时,终端应该关闭,但交互模式阻止了这种情况的发生。
我希望我的解释清楚。我需要的是一种强制程序在某些命令后运行和退出的方法,或者一种在不退出当前正在执行的程序的情况下打开/关闭交互模式的方法,但我不确定如何在将终端设置为交互模式后实现。
【问题讨论】:
你试过exit()
吗?
是的,但这不是问题。 exit()
(在 .py 文件中)和 exit
(.bat 文件)都是隐含的。如果我不在交互模式下启动 app.py,终端会按预期关闭,但我正在寻找一种在该模式下启动它的方法,但在某些情况下强制它退出。如果不可能,我认为以另一种方式对其进行编码会很简单:默认退出并强制它在某些情况下进行交互,但我不想那样做,因为我是目前尝试对我来说看起来更干净。
Why the CMD window will not close after Batch file execution? 的可能重复项
可能相关:superuser.com/questions/192550/…
感谢您的链接,但它不是重复的。我知道是交互模式导致它,我明确告诉它在交互模式下运行。我需要的是一种随时关闭它的方法。
【参考方案1】:
我假设你可以控制 python 返回的退出代码。
如果你想继续,只需让 python 返回 0,如果你想退出,则返回 1。然后修改INIT.BAT中对python的调用如下:
python app.py -i || exit
【讨论】:
以上是关于从脚本中退出 Windows 终端交互模式的主要内容,如果未能解决你的问题,请参考以下文章