@echo off
setlocal enabledelayedexpansion
REM 设置源文件夹和目的文件夹
set "source=D:"
set "dest=D:\txt_backup"
if not exist "%dest%" ( echo "%dest%" 目标文件夹不存在,已自动创建完成 & mkdir "%dest%" )
REM 下面用dir 命令列举出源文件夹下面所有的txt文件:
FOR /F "usebackq delims==" %%i IN (`dir /a /b /s "%source%\*.bat"`) DO (
echo +++++%%i+++++
rem echo %%~nxi
set cnt=0
echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if not exist "%dest%\%%~nxi" (
copy "%%i" "%dest%"
) else (
if exist "%dest%\%%~nxi.bak*" (
FOR /F "usebackq delims==" %%j IN (`dir /a /b /s "%dest%\%%~nxi.bak*"`) do (
@rem 获取文件扩展名bak*
set bak_str=%%~xj
echo "%%j"
echo bak____________________!bak_str!
set bak_cnt=!bak_str:~4,1!
@rem 设置当前计数器为当前已经复制的bak个数,比如当前已经有第5个重名文件:bak05,则设置为5.如果是bak15,则设置为15.
if !bak_cnt! equ 0 (set bak_cnt=!bak_str:~5,1! & echo =====bak_cnt_A is !bak_cnt!====) else (set bak_cnt=!bak_str:~4,2! & echo =====bak_cnt_B is !bak_cnt!====)
set /a cnt=bak_cnt+1 & echo =====bak_cnt_C is !bak_cnt!==== , ===== now is !cnt!====
)
@rem 这个if必须放在for外边。
echo wwwww= !cnt! =wwwww
if !cnt! LEQ 9 (copy "%%i" "%dest%\%%~nxi.bak0!cnt!") else (copy "%%i" "%dest%\%%~nxi.bak!cnt!")
) else (
echo else is "%%j"
set /a cnt=cnt+1 & echo =====!cnt!====
if !cnt! LEQ 9 (copy "%%i" "%dest%\%%~nxi.bak0!cnt!") else (copy "%%i" "%dest%\%%~nxi.bak!cnt!")
)
)
)
:end_exit
pause
复制当前目录及其子目录下面的所有的txt文件,如果有文件名相同则重命名为bak01,bak02 ......
最新推荐文章于 2022-11-02 00:06:11 发布