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

[文件操作] [分享]批处理复制文件的时候动态显示总数和当前个数

【问题描述】

从A文件夹复制到B,能不能做到先统计文件数,然后列出来A有多少文件,然后开始复制,复制的时候有文件数进度例如“正在复制第142个文件”。

A文件夹下面可能有若干层子文件夹,子文件夹下的文件也需要保持原有的目录结构复制到B文件夹。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

【追加问题1】

就是说我在这个复制命令前做了echo回显,但是我不想让他复制东西的时候清除掉回显,但是还不能滚动显示复制进度。

【追加方案1】

Win10-Win11.bat
  1. @echo off
  2. REM 设置文件所在的原始目录
  3. set "OldFolder=C:\Test\测试\From"
  4. REM 假设把文件复制到以下位置并保持原来的目录结构
  5. set "NewFolder=C:\Test\测试\To"
  6. for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%" ^| find /v /c ""') do (
  7.     set "FileNum=%%i"
  8. )
  9. echo 文件总数: %FileNum%
  10. echo 当前个数:
  11. for /f %%i in ('echo prompt $E ^| cmd') do (
  12.     set "KeyESC=%%i"
  13. )
  14. set "FileSeq=0"
  15. for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%"') do (
  16.     set /p=%KeyESC%[1A<nul
  17.     set /p=%KeyESC%[11G<nul
  18.     set /a FileSeq+=1
  19.     set "OldFile=%%i"
  20.     set "OldSub=%%~dpi"
  21.     setlocal enabledelayedexpansion
  22.     set "NewSub=!OldSub:%OldFolder%=!"
  23.     echo !FileSeq!
  24.     xcopy /y "!OldFile!" "!NewFolder!!NewSub!" >nul
  25.     endlocal
  26. )
  27. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

使用syba.exe (http://bbs.bathome.net/thread-35261-1-1.html) 可以做成进度条

TOP

【解决方案】

test-1.bat
  1. @echo off
  2. REM 设置文件所在的原始目录
  3. set "OldFolder=C:\Test\测试\From"
  4. REM 假设把文件复制到以下位置并保持原来的目录结构
  5. set "NewFolder=C:\Test\测试\To"
  6. for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%" ^| find /v /c ""') do (
  7.     set "FileNum=%%i"
  8. )
  9. set "FileSeq=0"
  10. for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%"') do (
  11.     cls
  12.     set /a FileSeq+=1
  13.     set "OldFile=%%i"
  14.     set "OldSub=%%~dpi"
  15.     setlocal enabledelayedexpansion
  16.     set "NewSub=!OldSub:%OldFolder%=!"
  17.     echo 文件总数: %FileNum%    当前个数: !FileSeq!
  18.     xcopy /y "!OldFile!" "!NewFolder!!NewSub!" >nul
  19.     endlocal
  20. )
  21. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表