影刀RPA进阶教程:利用“执行命令行”指令实现系统操作、文件批处理与ADB无线控制

前面四十多篇文章中,“执行命令行”这个指令多次出现——清理浏览器进程用taskkill,验证文件MD5用certutil,ADB操作更是全程命令行。

picture.image 但从来没有把这个指令单独拿出来讲透。它看似简单,实则权限、路径、阻塞、编码处处是坑。

picture.image 我也是非技术出身,刚开始用命令行时,连“以管理员身份运行”和“普通运行”的区别都不知道。后来慢慢摸索出一套在影刀RPA中安全、高效使用命令行的方法。这篇把“执行命令行”指令的完整用法和实战案例讲清楚。

picture.image

“执行命令行”指令的四个核心参数

在影刀指令面板搜索“执行命令行”,拖入编辑区后,右侧详情面板有四个关键参数:

参数说明注意事项
命令行要执行的命令或脚本支持cmd命令、PowerShell、exe程序
工作目录命令执行的当前目录影响相对路径,建议填绝对路径
超时时间命令的最大执行秒数默认60秒,长时间操作需调大
等待完成是否等待命令执行完毕不等待可能还没执行完就进入下一步

这里最容易踩坑,注意看: 如果“等待完成”选了“否”,影刀发送命令后立刻执行下一条指令,不管命令跑没跑完。如果你的下一步依赖这个命令的结果(比如删除文件后读取新文件),会拿到旧数据或空数据。大部分场景必须选“是”。

picture.image

picture.image

常用命令集:影刀中最实用的10条命令行

以下命令经过两年验证,稳定可靠。可以直接复制到影刀中使用。

picture.image

场景命令说明
清理Chrome进程taskkill /F /IM chrome.exe /T 2>nul强制终止所有Chrome,2>nul静默无进程时的报错

picture.image | 清理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" | 用影刀启动其他程序 |

picture.image

picture.image 命令中如果包含双引号,外层用双引号包裹整个命令时,内部双引号需要转义。 影刀中建议使用单引号或把命令写进批处理文件再执行。

安全使用命令行的三原则

命令行是把双刃剑。它能一键清理系统垃圾,也能一键删除重要文件。

原则一:绝不拼接用户输入或不可控变量

# ? 危险:如果文件路径变量是空的或包含恶意字符
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:\),后果不堪设想。删除文件优先用影刀内置的“删除文件”指令,它有安全校验。

原则三:所有涉及删除、移动的命令,先输出日志记录要执行的命令,再执行

在“执行命令行”前面加一个“输出日志”,把完整的命令行文本输出。出问题时至少知道执行了什么。

picture.image

实战一:通过命令行实现无线ADB连接

手机自动化那篇文章讲了USB连接,但很多场景不方便插线(多台手机、定时任务需要重新连接)。无线ADB可以解决。

步骤:

  1. 手机和电脑连接同一个WiFi
  2. 先用USB连接,执行命令开启TCP/IP模式
  3. 获取手机IP地址
  4. 通过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的结果需要解析。

操作步骤:

  1. “执行命令行”指令设置等待完成
  2. 紧接着拖入“获取命令行输出”指令
  3. 右侧参数绑定上一个命令行指令
  4. 输出结果存入变量(如cmd_output
  5. 用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学习手册》补充专题,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论