1.批处理 批量复制,遇到同名文件自动重命名
批处理程序:
@echo off
setlocal
set s=D:\m1
set d=D:\m2
pushd %s%
(for /f "tokens=*" %%i in ('dir/s/b/a-d') do (
set /a n=1
if exist "%d%\%%~nxi" for /f %%j in ('dir/b "%d%\%%~nxi"^|find /c /v ""') do set /a n=%%j+1
if !n!==1 (copy "%%i" "%d%\%%~nxi") else copy "%%i" "%d%\%%~ni_!n!%%~xi"))
批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的扩展名为bat 。目前比较常见的批处理包含两类:DOS批处理和PS批处理。PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。更复杂的情况,需要使用if、for、goto等命令控制程式的运行过程,如同C、Basic等高级语言一样。如果需要实现更复杂的应用,利用外部程式是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。批处理程序虽然是在命令行环境中运行,但不仅仅能使用命令行软件,任何当前系统下可运行的程序都可以放在批处理文件中运行。
2.DOS中如何按顺序复制文件并实现自动重命名
@echo off
set a=0
setlocal
for %%n in (*.jpg) do (
set /A a+=1
if !a! LSS 10 (ren "%%n" "照片0!a!.jpg") else ren "%%n" "照片!a!.jpg"
)for %%a in (*.jpg) do (
set/a n+=1
call ren "%%a" %%n%%.jpg
) 代码里面的汉子“照片”你可以根据自己需要改
3.批处理,复制大量文件时同名文件自动重命名
:::::::::::::::::::::::::::::::::: ::功能简介: ::搜索并复制一个或多个磁盘中的某一类型(后缀名)的文件 ::搜索并复制某文件夹及其子文件夹下某类文件 ::文件将被复制到本bat所在目录下的一新建文件夹中 ::自动重命名同名文件,避免覆盖 ::自动创建复制清单,记录复制路径,以及重命名文件的原文件名和新文件名 ::自动计算复制文件数量,并保存于清单中,清单位于bat所在目录。
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: @echo off&setlocal title 【类文件提取】 测试环境: Windows XP SP3 SET HardDisK=C D E F G H I J K L M N O P :str color !time:~7,1!!time:~9,1! set OUT=§&set REJ=&set DSK=&set DIS=&cls&set "LJ=%cd%"&echo. echo ╭⌒╮ ╭ ﹌╮╭ ∽╮ oοО○ ¤ 色彩不理想?按两次ENTER键! echo ︶︶ (o"."o)(o-.-o) , ︶︶ echo ◤ ̄ ̄~~﹊︸ ̄︸ ̄︸ ̄ ̄◥※※※※※※※※※※※※※※※◣ echo ( ◆ ◆ ————本批处理可用于文件归类存档———— ◆ ◆ ) echo ( ◆ ◆ ◆ ◆ ) echo ( ◆ ◆ 文件将被拷贝到本批处理所在目录下并创建清单 ◆ ◆ ) echo ( ◆ ◆ ◆ ◆ ) echo ( ◆ ◆ —— By:图腾 2011-03-29 ◆ ◆ ) echo ╰◥※※※※※※※※※※◣_______________◢ echo. for %%i in (%HardDisK%) do (if exist %%i: (set DSK=!DSK! %%i)) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: echo ★当前磁盘 "!DSK! " ——(请输入不需搜索的磁盘盘符)&echo. echo (例:输入"CEF",即只对C、E、F以外的磁盘进行搜索和复制)&echo. echo 你可以将目标文件夹拖入本窗口,只在其目录下搜索。
echo.&set/p OUT= (拖入文件夹到本窗口后需单击窗口,再按ENTER键确认):&cls set err=0&set fd=0 if "!OUT!" neq "§" if exist !OUT! ( cd !OUT!||echo 路径不正确,不能包含文件名!&&pause&&goto str set fd=1&set DIS= !OUT!&goto Suffix) for %%i in (!DSK!) do ( if /i "!OUT:%%i=!" equ "!OUT!" (set DIS=!DIS! %%i) if /i "!OUT:%%i=!" neq "!OUT!" (set REJ=!REJ! %%i&set err=1)) if !err!==1 (set REJ=,不搜索盘"!REJ! ") else (set DIS=!DSK!) :Suffix color 3f&set SUF=&set err=0&echo.&echo. if "!DIS!"=="" (color CF&set err=1&set DIS= 没有了,返回吧。
) echo 确认搜索对象 "!DIS! " !REJ!&echo. echo 请输入文件后缀名(如 MP3、TXT、DOC,不区分大小写)&echo. set/p SUF= ——(不输入内容按ENTER键返回): if "!SUF!" neq "" set SUF=!SUF: =! if "!SUF!"=="" (goto str) if "!err!"=="1" goto str :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: set ch=&set "tme="&set num=0&set "FL=*.!SUF!" for /f "tokens=1,* delims=. " %%i in ('echo !SUF!') do ( if "%%j"=="" (set "SUF=!SUF:.=!"&set "FL=*.!SUF!" ) else ( echo.&set/p ch=是要搜索文件“!SUF!”吗?(Y/N)[Y]: if /i "!ch!" neq "n" set "FL=!SUF!")) if exist File_!SUF! (set ch=&echo. set/p ch=“File_!SUF!”已存在,是否替换?(Y/N)[Y]: if /i "!ch!"=="n" (set tim=!time:.=! set dat=!date:~0,10!&set dat=!dat:-=! set "tme=_!dat!!tim::=!") else ( rd /s /q File_!SUF! 2>nul del /q !SUF!_CopyList.TXT 2>nul)) md "!LJ!\File_!SUF!!tme!"&cls set "FIL=!LJ!\File_!SUF!"&set "LIT=!LJ!\!SUF!_CopyList" :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: if %fd%==0 ( for %%i in (!DIS!) do ( CD/D %%i:&cd\&echo. echo ◣正在搜索 %%i 盘下 "%SUF%" 文件。
echo.&set cot=!num!&call :go)) else ( cd/d !DIS! echo.&echo ◣正在搜索!DIS!下 "%SUF%" 文件。
echo.&set cot=!num!&call :go) set ovr=!SUF!文件总数:!num! 日期:%date% %time:~0,8% (echo.&echo ——%ovr%)>>"!LIT!!tme!.TXT" if !num!==0 ( rd /s /q "!FIL!!tme!" 2>nul del /q "!LIT!!tme!.TXT" 2>nul echo.&echo 无此类型文件!&echo.) color 31&echo. if !num! neq 0 (echo 已复制到:"!FIL!!tme!" echo 复制清单:"!LIT!!tme!.TXT"&echo.) echo 复制文件总数:!num!,按任意键返回。 pause>nul&cls&cd/d !LJ!&goto Suffix :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::非清单文件?>>拷贝路径为不为存放路径?>>重名?[重命名预设]>>提取 :go for /f "delims=" %%j in ('dir /a /s /b !FL!') do ( set "lst=%%~nxj"&set "cpf=%%~dpj" if "!lst:_CopyList=!"=="!lst!" ( if "!cpf:File_=!"=="!cpf!" ( set rne=&set rea=&set rna=★ if exist "!FIL!!tme!\%%~nxj" ( set tim=!time:.=!&set tim=!tim::=! set rna=☆&set rea= ★重命名:"%%~nj-☆!tim!%%~xj" set "rne=\%%~nj-★!tim!%%~xj") COPY /y "%%j" "!FIL!!tme!!rne!" >nul echo !rna!已复制:"%%j"&set/a num+=1 echo !rna!"%%j"!rea!>>"!LIT!!tme!.TXT"))) set/a cot=!num!-!cot! echo.&echo %cd%目录下复制!SUF!文件数:!cot! 。
转载请注明出处windows之家 » win10设置复制自动重命名1