windows局域网中可用纯系统命令实现测试程序批量分发与执行:先在服务端建共享目录并授权,再通过robocopy拉取至客户端临时目录,校验后运行;支持手动、psexec远程或schtasks计划任务触发,需注意权限、路径编码、smb协议及防重复机制。
在 windows 局域网中,用批处理脚本批量分发并运行测试程序,核心是“分发 + 自动部署 + 本地执行”三步闭环。不依赖第三方工具,纯系统命令即可实现,关键在于共享路径可控、权限配置到位、客户端能可靠拉取并运行。
一、准备共享分发源(服务端)
先在一台机器(如管理员电脑)上搭建可被访问的共享目录:
- 新建文件夹,例如 D:TestDeploy,放入你的测试程序(如
test_app.exe)和配套脚本(如install.bat或run_once.cmd) - 用管理员权限运行 CMD,执行共享命令:
net share TestDist=D:TestDeploy /grant:Everyone,read
(若需写入权限,改用/grant:Users,full) - 确保目标客户端能访问该共享:在任意客户端资源管理器地址栏输入
\服务端IPTestDist(如\192.168.1.100TestDist),确认可浏览内容
二、编写分发+执行脚本(客户端侧)
这个脚本放在客户端本地(或通过其他方式下发),用于自动拉取、校验、运行:
- 脚本示例(保存为
deploy_and_run.bat):
@echo off set SOURCE=\192.168.1.100TestDist set TARGET=%temp% est_deploy <p>:: 创建临时目录 if not exist "%TARGET%" mkdir "%TARGET%"</p><p>:: 复制程序(/Y 覆盖不提示,/Z 支持断点续传) robocopy "%SOURCE%" "%TARGET%" test_app.exe run_once.cmd /Z /Y >nul</p><p>:: 校验关键文件是否存在 if not exist "%TARGET% est_app.exe" ( echo 错误:未成功获取 test_app.exe pause exit /b 1 )</p><p>:: 运行测试程序(可加 start /wait 阻塞等待,或直接后台运行) cd /d "%TARGET%" start "" "test_app.exe"</p><p>:: 可选:运行后清理(取消注释启用) :: rd /s /q "%TARGET%"</p><p>pause</p>
-
robocopy比copy更健壮,支持网络不稳定时重试;/Z和/R:3 /W:5可进一步增强容错 - 建议把
test_app.exe的启动逻辑封装进run_once.cmd,便于统一控制参数、日志、退出行为
三、批量触发客户端执行
有三种常用方式,按场景选择:
-
手动双击:将
deploy_and_run.bat发给各用户,或放在共享盘里统一通知运行 -
远程调用(需开启远程管理):在服务端用
psexec批量触发(需提前部署 psexec 工具):psexec @iplist.txt -u admin -p 123456 -c deploy_and_run.bat
其中iplist.txt每行一个客户端 IP -
计划任务推送(静默可靠):用
schtasks远程创建开机/登录任务:schtasks /s 192.168.1.50 /create /tn "RunTest" /tr "D:deploy_and_run.bat" /sc onlogon /ru SYSTEM
四、补充要点与避坑提示
-
权限问题:客户端若以普通用户运行,需确保其对共享有读取权;若程序需管理员权限,脚本中应加
net use映射或改用runas,但会弹窗——更推荐用任务计划以 SYSTEM 身份静默运行 - 路径空格与编码:所有路径含空格必须用英文双引号包裹;脚本保存为 ANSI 或 UTF-8 无 BOM,否则中文路径可能乱码
- 防火墙与 SMB:确认客户端已启用 SMB 1.0(旧系统)或 SMB 2+/3(Win10+ 默认开启),且 Windows 防火墙允许“文件和打印机共享”规则
-
一次运行防重复:可在脚本开头加标记检测,例如:
if exist "%temp% est_ran.flag" exit /b 0echo. > "%temp% est_ran.flag"










