2012-04-11 110 views
0

在Windows XP中,當你打開的cmd.exe,你得到一個控制檯窗口,在命令提示符下看起來像:有沒有辦法捕獲MSDOS命令提示字符串?

「C:\用戶和設置\員工風采\我的文檔>」其中s>後下劃線'>'是遊標。

這是Windows XP的默認設置。用戶可能會使用PROMPT = something或使用set PROMPT = something來更改它。

在控制檯窗口中,在命令提示符下輸入不帶參數的內部命令「prompt」不會返回當前提示字符串是什麼。

是否有一個命令或最好是一個Python庫,可以檢索命令提示符是什麼。如果有一種內置的檢索字符串的方法,我不想編寫一個Python模塊。

獲取命令提示符字符串的用例是當我使用Python子進程模塊運行python程序,然後在子進程運行時返回到同一控制檯的命令提示符時,我將光標放在空行上。我可以按Enter鍵並重新顯示命令提示符;但看起來好像還沒有從子流程返回,這會誤導我的用戶。

我的應用程序的GUI部分的一個解決方案是運行pythonw runapp.py。不過,我還想知道是否有辦法通過使用已經生成的DOS命令,Python庫,正確使用subprocess.Popen()和communicate()來調用子進程時獲得乾淨的命令提示符?

+2

這是Windows的提示。自Windows XP以來,MS-DOS已經失效。 – 2012-04-11 15:42:23

+1

@larsmans - 在Windows XP之前就已經死了 – 2012-04-11 15:44:25

+2

@Rhhound:好的,他們終於把它的臭遺體埋在了XP中。 – 2012-04-11 15:45:32

回答

1

不知道它是否有幫助,但如果從命令提示符輸入「SET」,您將看到一個環境變量列表,包括當前的PROMPT(但是如果它是默認提示,它將不會出現在列表中) 。

+0

+1;它不會出現在SET中,但回顯%提示%仍然應該返回$ p $ g – 2012-04-11 15:47:54

1

在命令行:

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

+0

是的,但是然後我需要編寫一個模塊(並維護它)而不是告訴它們只按回車鍵。在每個「打印」語句(acutally function)之後,需要解析並打印'$ P $ G'或者他們在自己站上的任何東西。(在python 2.7.2中使用btw;這是可行的。我只是想知道是否有像「C:\ getprompt」會返回不是'$ p $ g'而是'C:\ Trekkic \ controller \>「或使用正確的管道來強制cmd.exe重新顯示其命令提示符。也錯過了你的編輯。 – DevPlayer 2012-04-11 15:59:28

+0

我會嘗試「開始」 – DevPlayer 2012-04-11 16:01:44

+0

確保將其與使用重定向來抑制正在運行的python腳本的輸出相結合。 http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true – 2012-04-11 16:03:10

0

我認爲你正在尋找這樣的:

import os 
print os.getcwd() 
相關問題