有没有办法捕获 MSDOS 命令提示符字符串?
Posted
技术标签:
【中文标题】有没有办法捕获 MSDOS 命令提示符字符串?【英文标题】:Is there a way to capture the MSDOS command prompt string? 【发布时间】:2012-04-11 15:40:39 【问题描述】:在 Windows XP 中,当您打开 cmd.exe 时,您会看到一个带有命令提示符的控制台窗口,如下所示:
"C:\User and Settings\Staffer\My Documents>" 其中 s> '>' 后面的下划线是光标。
这是 Windows XP 的默认设置。用户可能会使用 PROMPT=something 或使用 set PROMPT=something 来更改它
在控制台窗口的命令提示符下,输入不带参数的内部命令“prompt”不会返回当前提示字符串。
是否有可以检索命令提示符的命令或者最好是 Python 库。如果有检索字符串的内置方法,我不想编写 Python 模块。
获取命令提示符字符串的用例是,当我使用 Python 子进程模块运行 Python 程序,然后在子进程运行时返回到同一控制台的命令提示符时,我将光标置于空行上。我可以按 Enter 键,命令提示符将重新显示;但它看起来好像还没有从子进程中返回,这误导了我的用户。
我的应用程序的 gui 部分的一个解决方案是运行 pythonw runapp.py。但是我想知道是否有办法在调用子进程时通过使用已经制作的 DOS 命令、Python 库、正确使用 subprocess.Popen() 和communicate() 来获得干净的命令提示符?
【问题讨论】:
这是 Windows 提示符。自 Windows XP 以来,MS-DOS 已死。 @larsmans - 在 Windows XP 之前它就已经死了 @Ramhound:好吧,他们终于把它的臭味遗骸埋在 XP 里了。 更好的解决方案是等待子流程完成后再完成自己...您能否简要描述一下您如何使用subprocess
?
当然;当前: p1 = subprocess('gui_control.py') p2 = subprocess('gui_drill_logger.py') 打开一些简单的 wx 窗口;一些非日志内容偶尔会“打印”到控制台;未登录文件。我试图避免一堆控制台窗口,每个窗口都运行其他小脚本。
【参考方案1】:
不确定它是否有帮助,但如果您从命令提示符输入“SET”,您将看到一个环境变量列表,包括当前的 PROMPT(但如果它是默认提示符,它将不会出现在列表中)。
【讨论】:
+1;它不会与 SET 一起出现,但 echo %prompt% 仍应返回 $p$g【参考方案2】:从命令行:
c:\>echo %prompt%
$P$G
来自 Python:
>>> import os
>>> os.environ["PROMPT"]
'$P$G'
(http://docs.python.org/library/os.html#process-parameters)
[编辑]
啊,我错过了你的编辑。听起来您要做的就是在后台运行脚本。我相信您正在寻找带有 /b 选项的 Windows“启动”命令 - http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/start.mspx?mfr=true
【讨论】:
是的,但是我需要编写一个模块(并维护它),而不是告诉他们只需按回车键。在 Python 2.7.2 顺便说一句,在每个“打印”语句(实际功能)之后,需要解析和打印“$P$G”或他们在自己的站点所拥有的任何内容;这是可行的;我只是想知道是否有类似 "C:\getprompt" 的东西会返回不是 '$p$g' 而是 "C:\Trekkic\controller\>" 或者使用正确的管道来强制 cmd.exe 重新显示其命令提示符.也错过了您的编辑。 确保将其与使用重定向相结合,以抑制正在运行的 python 脚本的输出。 microsoft.com/resources/documentation/windows/xp/all/proddocs/…【参考方案3】:我想你正在寻找这个:
import os
print os.getcwd()
【讨论】:
以上是关于有没有办法捕获 MSDOS 命令提示符字符串?的主要内容,如果未能解决你的问题,请参考以下文章