有一種情況,我需要根據從命令提示符窗口接收到的輸出連續讀取,寫入和處理一些內容。例如,如果命令窗口正在查找輸入,我需要向用戶顯示一個消息框。有沒有辦法做到這一點?是否有一個API來處理與Windows命令提示符?
1
A
回答
3
通過Process對象,您可以重定向標準輸入和輸出。
所以,你會做類似下面的...
var proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "C:\\YourExeGoesHere.exe";
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardInput = true;
proc.Start();
var thisComesFromTheProcess = proc.StandardOutput.ReadLine();
proc.StandardInput.WriteLine("this goes to the process");
你可能想看看Process.OutputDataReceived事件時輸出數據被寫入通知,但這應該讓你在正確的軌道上,有是涵蓋OutputDataReceived事件的其他SO帖子。
1
我會讓命令行應用程序啓動一個WPF可執行文件。
讓WPF打開socket/web api主機等來監聽其他命令。
當命令行需要用戶輸入時,讓它運行一個批處理,它將一個請求提交給WPF應用程序,與telnet session沒有什麼不同。您可以使此調用異步或等待響應。
WPF可以打開通知,詢問用戶輸入。用戶輸入參數並將其提交回到啓動連接的上面的命令行,從而允許批處理文件繼續處理。
或者,如果您可以使用Powershell,而不是標準CommandLine,則可能會使用this。你甚至可以打開文件對話框如this。
這些是你的選擇,我能想到的,但是是的,它會成爲一個PITA,祝你好運。
相關問題
- 1. 在Windows命令提示符下處理多個perl腳本
- 2. 是否有更好的Windows命令提示符?
- 3. 命令提示符批處理文件
- 4. 「Node.js命令提示符」和Windows命令提示符有什麼區別?
- 5. Windows命令提示符 - '調試'不是一個公認的命令?
- 6. 是否有一些jsp腳本可以打開Windows的命令提示符?
- 7. 不使用任何命令提示符處安裝沒有命令提示符
- 8. Visual Studio命令提示符與常規命令提示符?
- 9. 是否有運行或命令提示符命令來更改Windows中的背景圖像?
- 10. 命令提示符:檢查Windows服務是否啓動
- 11. 顯示%(的Windows 10命令提示符)
- 12. 命令在命令提示符工作,但不是在批處理文件
- 13. 從命令提示符處複製和重命名文件(Windows)
- 14. 在Windows單線運行多個命令命令提示符
- 15. 批處理文件以確定是否使用命令提示符
- 16. 在Windows提示符下使用一個啓動命令執行3個命令
- 17. 「沒有足夠的存儲是可用來處理此命令」,在與Windows 7
- 18. Windows批處理 - 檢查一個命令變量是否出現在另一個命令變量中
- 19. 是否有顯示Unicode字符的Windows命令shell?
- 20. Ruby在Windows命令提示符下
- 21. Windows命令提示符:逃避引號
- 22. windows命令提示符快捷鍵
- 23. Windows命令提示符更改
- 24. Windows PowerShell:更改命令提示符
- 25. 命令提示符中的VIM Windows 10
- 26. 從Python控制Windows命令提示符
- 27. Windows SDK 7.1命令提示符LNK1104
- 28. 從Windows命令提示符運行R
- 29. 從Windows命令提示符使用ssh
- 30. Windows命令提示符 - 空目錄
消息框不是允許用戶輸入輸入的好方法。沒有超出是/否/取消。這個問題有一個共同的問題,它根本不解釋爲什麼這是必要的。所以猜測你真正需要的是不可能的。 –
你應該看看PowerShell,它有一個完整的API –
@JohnSaunders,這取決於OP試圖實現什麼,以及爲什麼... –