标题: [文件操作] [分享]批处理复制文件的时候动态显示总数和当前个数 [打印本页]
作者: Batcher 时间: 2023-12-14 10:02 标题: [分享]批处理复制文件的时候动态显示总数和当前个数
【问题描述】
从A文件夹复制到B,能不能做到先统计文件数,然后列出来A有多少文件,然后开始复制,复制的时候有文件数进度例如“正在复制第142个文件”。
A文件夹下面可能有若干层子文件夹,子文件夹下的文件也需要保持原有的目录结构复制到B文件夹。
作者: Batcher 时间: 2023-12-14 10:02
【解决方案】
test-1.bat- @echo off
- REM 设置文件所在的原始目录
- set "OldFolder=C:\Test\测试\From"
- REM 假设把文件复制到以下位置并保持原来的目录结构
- set "NewFolder=C:\Test\测试\To"
- for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%" ^| find /v /c ""') do (
- set "FileNum=%%i"
- )
- set "FileSeq=0"
- for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%"') do (
- cls
- set /a FileSeq+=1
- set "OldFile=%%i"
- set "OldSub=%%~dpi"
- setlocal enabledelayedexpansion
- set "NewSub=!OldSub:%OldFolder%=!"
- echo 文件总数: %FileNum% 当前个数: !FileSeq!
- xcopy /y "!OldFile!" "!NewFolder!!NewSub!" >nul
- endlocal
- )
- pause
复制代码
作者: hnfeng 时间: 2023-12-14 10:20
使用syba.exe (http://bbs.bathome.net/thread-35261-1-1.html) 可以做成进度条
作者: Batcher 时间: 2023-12-14 16:48
【追加问题1】
就是说我在这个复制命令前做了echo回显,但是我不想让他复制东西的时候清除掉回显,但是还不能滚动显示复制进度。
【追加方案1】
Win10-Win11.bat- @echo off
- REM 设置文件所在的原始目录
- set "OldFolder=C:\Test\测试\From"
- REM 假设把文件复制到以下位置并保持原来的目录结构
- set "NewFolder=C:\Test\测试\To"
- for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%" ^| find /v /c ""') do (
- set "FileNum=%%i"
- )
- echo 文件总数: %FileNum%
- echo 当前个数:
- for /f %%i in ('echo prompt $E ^| cmd') do (
- set "KeyESC=%%i"
- )
- set "FileSeq=0"
- for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%"') do (
- set /p=%KeyESC%[1A<nul
- set /p=%KeyESC%[11G<nul
- set /a FileSeq+=1
- set "OldFile=%%i"
- set "OldSub=%%~dpi"
- setlocal enabledelayedexpansion
- set "NewSub=!OldSub:%OldFolder%=!"
- echo !FileSeq!
- xcopy /y "!OldFile!" "!NewFolder!!NewSub!" >nul
- endlocal
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |