找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25320|回复: 3

[文件操作] 求助批处理多线程 xcopy的等待问题

[复制链接]
发表于 2023-11-4 13:24:32 | 显示全部楼层 |阅读模式
从坛内大神得到多进程xcopy代码如下:
  1. @echo off&&setlocal enabledelayedexpansion
  2. set m=10
  3. for /f "delims=" %%g in (list.txt) do (
  4.   start "" %%g
  5.   set /a m-=1
  6.   if !m!==0 ping /n 5 127.1>nul&&set m=10
  7.   )
  8. )
复制代码
list.txt 里是 很多行 xcopy C:\a\*** D:\b\ /d /e /y


但是每个xcopy需要运行的时间不同,经常出现10个进程还没有完成就被强制结束,
想实现计算当前运行的cmd窗口个数,当cmd个数为0时才运行下一批次,

请问怎样取得当前运行的cmd窗口个数?
发表于 2023-11-4 13:34:04 | 显示全部楼层
买个固态硬盘 直接单进程复制 √
普通硬盘,命令行多线程复制  ×
发表于 2023-11-4 15:48:44 | 显示全部楼层
本帖最后由 77七 于 2023-11-4 16:02 编辑
  1. @echo off&&setlocal enabledelayedexpansion
  2. set m=10
  3. for /f "delims=" %%g in (list.txt) do (
  4.         start "mark" %%g
  5.         set /a m-=1
  6.         if !m! equ 0 (
  7.                 set m=10
  8.                 call :1
  9.         )
  10. )
  11. pause & exit

  12.         :1
  13.         for /f %%a in ('tasklist /fi "WINDOWTITLE eq mark" ^|find /c "cmd.exe"') do (
  14.                 if %%a equ 0 (
  15.                         exit /b
  16.                 ) else (
  17.                         timeout 2 >nul
  18.                         goto :1
  19.                 )
  20.         )
复制代码
发表于 2023-11-4 16:38:58 | 显示全部楼层
回复 1# sonewboy


建议放弃xcopy,改用默认多线程的robocopy,参考:
http://bbs.bathome.net/thread-6283-1-1.html#pid40646
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 11:36 , Processed in 0.017902 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表