前面四十多篇文章中,“执行命令行”这个指令多次出现——清理浏览器进程用taskkill,验证文件MD5用certutil,ADB操作更是全程命令行。
但从来没有把这个指令单独拿出来讲透。它看似简单,实则权限、路径、阻塞、编码处处是坑。
我也是非技术出身,刚开始用命令行时,连“以管理员身份运行”和“普通运行”的区别都不知道。后来慢慢摸索出一套在影刀RPA中安全、高效使用命令行的方法。这篇把“执行命令行”指令的完整用法和实战案例讲清楚。
“执行命令行”指令的四个核心参数
在影刀指令面板搜索“执行命令行”,拖入编辑区后,右侧详情面板有四个关键参数:
| 参数 | 说明 | 注意事项 |
|---|---|---|
| 命令行 | 要执行的命令或脚本 | 支持cmd命令、PowerShell、exe程序 |
| 工作目录 | 命令执行的当前目录 | 影响相对路径,建议填绝对路径 |
| 超时时间 | 命令的最大执行秒数 | 默认60秒,长时间操作需调大 |
| 等待完成 | 是否等待命令执行完毕 | 不等待可能还没执行完就进入下一步 |
这里最容易踩坑,注意看: 如果“等待完成”选了“否”,影刀发送命令后立刻执行下一条指令,不管命令跑没跑完。如果你的下一步依赖这个命令的结果(比如删除文件后读取新文件),会拿到旧数据或空数据。大部分场景必须选“是”。
常用命令集:影刀中最实用的10条命令行
以下命令经过两年验证,稳定可靠。可以直接复制到影刀中使用。
| 场景 | 命令 | 说明 |
|---|---|---|
| 清理Chrome进程 | taskkill /F /IM chrome.exe /T 2>nul | 强制终止所有Chrome,2>nul静默无进程时的报错 |
| 清理Excel进程 |
taskkill /F /IM excel.exe /T 2>nul | 流程开头清理残留Excel,防止文件被占用 |
| 创建文件夹 | mkdir "C:\RPA_Data\输出" | 路径不存在时创建,已有则不报错 |
| 复制文件夹 | xcopy "源" "目标" /E /I /Y | /E包含子目录,/Y不提示覆盖 |
| 删除7天前的日志 | forfiles /p "C:\RPA_Logs" /s /m *.txt /d -7 /c "cmd /c del @file" | 自动清理过期日志 |
| 获取文件MD5 | certutil -hashfile "文件路径" MD5 | 验证文件完整性 |
| 重启ADB服务 | adb kill-server && adb start-server | 手机连不上时的第一步排查 |
| 查看ADB设备 | adb devices | 检查手机是否连接成功 |
| 屏幕截图(ADB) | adb shell screencap -p /sdcard/screenshot.png && adb pull /sdcard/screenshot.png "C:\截图.png" | 手机截图直接拉到电脑 |
| 打开指定程序 | start "" "C:\Program Files\影刀RPA\影刀RPA.exe" | 用影刀启动其他程序 |
命令中如果包含双引号,外层用双引号包裹整个命令时,内部双引号需要转义。 影刀中建议使用单引号或把命令写进批处理文件再执行。
安全使用命令行的三原则
命令行是把双刃剑。它能一键清理系统垃圾,也能一键删除重要文件。
原则一:绝不拼接用户输入或不可控变量
# ? 危险:如果文件路径变量是空的或包含恶意字符
command = f"del {file_path}"
# ? 安全:先检查变量非空,路径加引号
# 在影刀中:先用条件判断确认路径非空,再执行
command = f'del "C:\\RPA_Data\\Temp\\{timestamp}.tmp"'
原则二:能不用del /F /S /Q就不用它
del /F /S /Q 是强制静默递归删除。一旦路径错误(比如变量为空导致变成del /F /S /Q C:\),后果不堪设想。删除文件优先用影刀内置的“删除文件”指令,它有安全校验。
原则三:所有涉及删除、移动的命令,先输出日志记录要执行的命令,再执行
在“执行命令行”前面加一个“输出日志”,把完整的命令行文本输出。出问题时至少知道执行了什么。
实战一:通过命令行实现无线ADB连接
手机自动化那篇文章讲了USB连接,但很多场景不方便插线(多台手机、定时任务需要重新连接)。无线ADB可以解决。
步骤:
- 手机和电脑连接同一个WiFi
- 先用USB连接,执行命令开启TCP/IP模式
- 获取手机IP地址
- 通过IP连接
# 命令行指令序列(在影刀中按顺序执行)
# 1. 确保手机通过USB已连接
# adb devices → 确认有设备
# 2. 重启ADB为TCP/IP模式(端口5555)
# adb tcpip 5555
# 3. 获取手机IP地址(输出中查找IP)
# adb shell ip route → 或 adb shell ifconfig wlan0
# 4. 拔掉USB线,通过IP连接
# adb connect 192.168.1.100:5555
# 5. 验证连接
# adb devices → 应显示 192.168.1.100:5555 device
无线ADB的稳定性不如USB,手机息屏或WiFi切换后可能断开。 定时任务中如果使用无线ADB,每次执行前需要检测连接状态,断开则重连。
实战二:用PowerShell批量修改文件编码
影刀写入文本文件默认UTF-8,但某些老系统需要GBK编码。用命令行批量转换。
# PowerShell命令:将文件夹内所有txt文件从UTF-8转为GBK
# 单行命令(在影刀“执行命令行”中填入):
powershell -Command "Get-ChildItem 'C:\\RPA_Data\\*.txt' | ForEach-Object { $content = Get-Content $_.FullName -Encoding UTF8; Set-Content $_.FullName -Encoding Default -Value $content }"
PowerShell命令在影刀中执行时,注意引号的转义。 推荐把复杂PowerShell脚本写成一个.ps1文件,在影刀中执行powershell -File "脚本路径"。
实战三:用命令行监控影刀流程是否卡死
在定时任务旁边加一个“守护”流程,定期检查主流程是否卡死。
# 检测逻辑:如果主流程的日志文件超过30分钟没有更新,判定卡死
# 1. 获取日志文件最后修改时间
# forfiles /p "C:\RPA_Logs" /m "流程日志.txt" /c "cmd /c echo @fdate @ftime"
# 2. 用Python代码块解析时间,计算与当前时间差
# 3. 如果超过30分钟:
# taskkill /F /IM 影刀RPA.exe (结束卡死的进程)
# 发送企微告警通知
# 重新启动影刀和流程
这个方案适合长期无人值守的服务器环境。
命令行的输出结果获取
“执行命令行”指令执行后,可以通过“获取命令行输出”指令拿到命令返回的文本。这很重要,比如adb devices的结果需要解析。
操作步骤:
- “执行命令行”指令设置等待完成
- 紧接着拖入“获取命令行输出”指令
- 右侧参数绑定上一个命令行指令
- 输出结果存入变量(如
cmd_output) - 用Python或条件判断解析变量内容
# 示例:检查ADB设备是否连接
# cmd_output = "List of devices attached\n192.168.1.100:5555\tdevice\n"
# Python代码块解析:
if "device" in cmd_output and "unauthorized" not in cmd_output:
adb_status = "已连接"
else:
adb_status = "未连接"
常见问题快速排查表
| 问题现象 | 原因 | 解决方法 |
|---|---|---|
| 'xxx' 不是内部或外部命令 | 系统PATH没有这个程序 | 用完整路径,如"C:\adb\adb.exe" |
| 命令执行后无反应 | 等待完成选了“否” | 改为“是” |
| 中文路径命令乱码 | 编码问题 | 命令行前加chcp 65001切换到UTF-8 |
| 权限不足 | 需要管理员权限 | 以管理员身份运行影刀 |
| 长时间命令超时 | 超时时间太短 | 调大超时,或拆成多个短命令 |
#影刀RPA #RPA自动化 #命令行 #ADB #系统操作
作者:林焱
本文为《影刀RPA学习手册》补充专题,内容源于实操经验的整理与分享。
