【问题标题】:Exit windows terminal interactive mode from within a script从脚本中退出 Windows 终端交互模式
【发布时间】: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,终端会按预期关闭,但我正在寻找一种在该模式下启动它的方法,但在某些情况下强制它退出。如果不可能,我认为以另一种方式对其进行编码会很简单:默认退出并强制它在某些情况下进行交互,但我不想那样做,因为我是目前尝试对我来说看起来更干净。
  • 感谢您的链接,但它不是重复的。我知道是交互模式导致它,我明确告诉它在交互模式下运行。我需要的是一种随时关闭它的方法。

标签: python batch-file command-line-arguments command-prompt


【解决方案1】:

我假设你可以控制 python 返回的退出代码。

如果你想继续,只需让 python 返回 0,如果你想退出,则返回 1。然后修改INIT.BAT中对python的调用如下:

python app.py -i || exit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-14
    • 2018-05-11
    • 2017-05-05
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    相关资源
    最近更新 更多