批处理For循环如何设置不等待前次迭代完成?RDP并行启动问题
解决批处理批量并行启动RDP连接的问题
问题根源:批处理中直接调用
mstsc时,默认会等待该进程退出才执行下一条命令;而CMD交互模式下,系统会自动异步启动进程,不会阻塞后续命令。你之前用START没生效,大概率是参数格式不对。正确的批处理脚本写法:
@echo off for /r %%i in (*.rdp) do ( start "" "mstsc.exe" "%%~fi" /f )关键说明:
start "":空双引号是必填项,因为START命令会把第一个带引号的字符串当作窗口标题,省略的话,若mstsc路径或RDP文件名含空格,会导致命令解析错误,进而阻塞执行。"%%~fi":用完整路径替代%%~nxi,避免当前工作目录变化导致找不到RDP文件,同时带引号兼容文件名含空格的场景。/f:保留你需要的全屏启动参数。
可选优化(避免重复启动同个RDP连接):
@echo off for /r %%i in (*.rdp) do ( tasklist /fi "imagename eq mstsc.exe" /fi "windowtitle eq %%~ni" | findstr /i "mstsc.exe" >nul || start "" "mstsc.exe" "%%~fi" /f )这段会先检查是否已有对应标题的RDP进程,仅在无进程时启动新连接。
内容的提问来源于stack exchange,提问作者Deozzissimo
相关产品推荐
相关产品推荐

