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

[文件操作] 批处理怎样移动文件,遇到重命名自动加序号

请问下,我需要移动C:\1文件夹及子文件夹中的所有.doc文件和.ppt文件到E:\2文件夹,只移动文件,不用保持目录结构,如果遇到文件名重复,文件名后自动加类似(1)序号。
望牛人动动你的发财手告诉我下bat代码,谢啦。

自己以前处理文件写的代码,与你的需求还是有较大的差异,修改后未经验证。运行代码如果没问题,以后使用时可将所有copy改为move就行了。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /r "c:\1" %%a in ("*.doc") do (
  4.     if not exist "E:\2\%%~nxa" (copy "%%a" "E:\2\") else (
  5.         if not exist "E:\2\%%~na (2)%%~xa" (copy "%%a" "E:\2\%%~na (2)%%~xa") else (
  6.             set n=2
  7.             for /f "delims=" %%b in ('dir /b /a-d E:\2\*.doc^|findstr /r /be /c:"%%~na ([0-9][0-9]*)%%~xa"') do (
  8.                 set "str=%%~nb"
  9.                 set "m=!str:%%~na (=!"
  10.                 set "m=!m:)=!"
  11.                 if !m! gtr !n! set /a n=m
  12.             )
  13.             set /a n+=1
  14.             copy "%%a" "E:\2\%%~na (!n!)%%~xa"
  15.         )
  16.     )
  17. )
  18. pause
复制代码

TOP

本帖最后由 rosande 于 2021-2-20 17:42 编辑

回复 2# qixiaobin0715


多谢出手相助

TOP

返回列表