最近需要捕获已经在运行的CMD窗口内容,并且需要根据指定输出内容来判断下一步的行动(输入指定内容)。

尝试了很多次后,想到一个思路:

通过inspect.exe来获取CMD窗口Name信息通过uiautomation捕获到CMD窗口通过输入Ctrl+A后Ctril+C来复制整个CMD窗口内容然后获取到剪切板中复制的内容后进行判断

基本代码如下:

from uiautomation import DocumentControl

import clipboard

# 获取CMD窗口

window = DocumentControl(searchDepth=3, Name='Text Area')

# 测试在CMD里面删除某个文件

window.SendKeys('del /p test.txt')

window.SendKeys('{Enter}')

# Ctrl A / C 全选复制

window.SendKeys('{Ctrl}A')

window.SendKeys('{Ctrl}C')

# 获取剪切板里面的复制内容

result = clipboard.paste()

print(result)

# 判断复制内容是否是以特定内容结尾或者特定字符

if result.endswith('Delete (Y/N)?'):

# 输入内容

window.SendKeys('n')

window.SendKeys('{Enter}')

window.Close()

# 执行完成

print('finished')

else:

print('No such value,not complete')

 

查看原文