复制当前目录及其子目录下面的所有的txt文件,如果有文件名相同则重命名为bak01,bak02 ......

@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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值