标题: [文件操作] 批处理怎样移动文件,遇到重命名自动加序号 [打印本页]
作者: rosande 时间: 2021-2-20 14:11 标题: 批处理怎样移动文件,遇到重命名自动加序号
请问下,我需要移动C:\1文件夹及子文件夹中的所有.doc文件和.ppt文件到E:\2文件夹,只移动文件,不用保持目录结构,如果遇到文件名重复,文件名后自动加类似(1)序号。
望牛人动动你的发财手告诉我下bat代码,谢啦。
作者: qixiaobin0715 时间: 2021-2-20 15:39
自己以前处理文件写的代码,与你的需求还是有较大的差异,修改后未经验证。运行代码如果没问题,以后使用时可将所有copy改为move就行了。- @echo off
- setlocal enabledelayedexpansion
- for /r "c:\1" %%a in ("*.doc") do (
- if not exist "E:\2\%%~nxa" (copy "%%a" "E:\2\") else (
- if not exist "E:\2\%%~na (2)%%~xa" (copy "%%a" "E:\2\%%~na (2)%%~xa") else (
- set n=2
- for /f "delims=" %%b in ('dir /b /a-d E:\2\*.doc^|findstr /r /be /c:"%%~na ([0-9][0-9]*)%%~xa"') do (
- set "str=%%~nb"
- set "m=!str:%%~na (=!"
- set "m=!m:)=!"
- if !m! gtr !n! set /a n=m
- )
- set /a n+=1
- copy "%%a" "E:\2\%%~na (!n!)%%~xa"
- )
- )
- )
- pause
复制代码
作者: rosande 时间: 2021-2-20 17:26
本帖最后由 rosande 于 2021-2-20 17:42 编辑
回复 2# qixiaobin0715
多谢出手相助
作者: 娜美 时间: 2024-6-4 14:32
本帖最后由 娜美 于 2024-6-4 14:51 编辑
通过搜索进来发现的,, 试了2楼大哥哥的, 例如, D:\A 和 D:\B 文件夹里的名称相同, 执行copy or move前3次的代码操作是会重命名, 但当执行第4次或5次以后就会将以覆盖文件方式进行, 如看到, 请再增大—下支持次数, 例如 10次以后再覆盖也没所谓了
作者: qixiaobin0715 时间: 2024-6-4 15:07
那是根据好多年前自用的代码修改的,考虑的不是太周全,自用代码写得也不成熟,有点复杂,不是太好用,大致看了看,不知这样修改是否可行,如果不行的话,建议放弃此方案:- @echo off
- for /r "c:\1" %%a in ("*.doc") do (
- if not exist "E:\2\%%~nxa" (copy "%%a" "E:\2\") else (
- if not exist "E:\2\%%~na (2)%%~xa" (copy "%%a" "E:\2\%%~na (2)%%~xa") else (
- set n=2
- setlocal enabledelayedexpansion
- for /f "delims=" %%b in ('dir /b /a-d E:\2\*.doc^|findstr /r /be /c:"%%~na ([0-9][0-9]*)%%~xa"') do (
- set "str=%%~nb"
- set "m=!str:%%~na (=!"
- set "m=!m:)=!"
- if !m! gtr !n! set /a n=m
- )
- set /a n+=1
- copy "%%a" "E:\2\%%~na (!n!)%%~xa"
- endlocal
- )
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |