[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

从坛内大神得到多进程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窗口个数?

买个固态硬盘 直接单进程复制 √
普通硬盘,命令行多线程复制  ×

TOP

本帖最后由 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. )
复制代码
bat小白,请多指教!谢谢!

TOP

回复 1# sonewboy


建议放弃xcopy,改用默认多线程的robocopy,参考:
http://bbs.bathome.net/thread-6283-1-1.html#pid40646
测试代码之前请做好备份

TOP

返回列表