批处理,复制大量文件时同名文件自动重命名。 复制的过程中,用批处理自动重命名同名的文件。

\u6279\u5904\u7406\uff0c\u590d\u5236\u6587\u4ef6\uff0c\u5982\u679c\u6709\u91cd\u540d\uff0c\u5219\u81ea\u52a8\u91cd\u547d\u540d

@echo off
setlocal enabledelayedexpansion
if not exist d:\123 md d:\123
pushd c:\123
for /f "tokens=*" %%i in ('dir/s/b') do (
if exist "d:\123\%%~nxi" (
for /f %%j in ('dir/b "d:\123\%%~ni*%%~xi"^|find /c /v ".*"') do set /a n=%%j + 1
copy "%%i" "d:\123\%%~ni!n!%%~xi") else copy "%%i" d:\123)

@echo off&setlocal enabledelayedexpansionfor /f "delims=" %%a in ('dir/a-d/s/b M:\*.doc') do ( if exist "E:%%~pa%%~nxa" ( echo f|xcopy /s/e "%%~a" "E:%%~pa!time::=!!ramdon!_%%~nxa" ) else ( xcopy /s/e "%%~a" "E:%%~pa" ))pause \u8fd9\u4e2a\u4ee3\u7801\u53ea\u9002\u5408\u76d8\u7b26\u5bf9\u76d8\u7b26\u62f7\u8d1d\u3002
\u6700\u540e\u540c\u540d\u7684\u5c06\u52a0\u4e0a\u65f6\u95f4\u548c\u968f\u673a\u6570\u3002
\u7c7b\u4f3c\u5982\u56fe\u547d\u540d\u65b9\u5f0f

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::功能简介:
::搜索并复制一个或多个磁盘中的某一类型(后缀名)的文件
::搜索并复制某文件夹及其子文件夹下某类文件
::文件将被复制到本bat所在目录下的一新建文件夹中
::自动重命名同名文件,避免覆盖
::自动创建复制清单,记录复制路径,以及重命名文件的原文件名和新文件名
::自动计算复制文件数量,并保存于清单中,清单位于bat所在目录。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off&setlocal enabledelayedexpansion
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! "☆"表示已重命名文件
echo ==============================================================
goto :eof
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

如此改试一下:echo offset num=0
set aa=目录1
set bb=目录2
for /f "delims=" %%i in ('dir /s /a-d /b %aa%\*.*') do ( if not exist "%bb%\%%i" ( copy "%%~fi" %bb%\>nul ) else call :copy_txt "%%~fi" "%%~ni" %%~xi)goto :eof
:copy_txtset file_n=%2set "file_n=%file_n:~1,-1%"set file_x=%3set /a num+=1if not exist "%bb%\%file_n%%num%%file_x%" ( copy %1 "%bb%\%file_n%%num%%file_x%">nul) else call :copy_txt %1 "%file_n%" %file_x%set num=0goto :eof

  • ...鎬庝箞澶嶅埗澶氫釜鏂囦欢澶逛腑鐨勬枃浠跺埌鍙︿竴鐩樼殑鍚屽悕鏂囦欢澶涓?
    绛旓細cd/d c:\ for %i in (1 2 3)do (if not exist d:\%i md d:\%i)& copy %i\. d:\%i\.濡傛灉鏀鎵瑰鐞涓妸%i鏀规垚%%i 娉ㄦ剰杩欑鍐欐硶鏂囦欢澶鍚嶄笉鑳芥湁绌烘牸
  • 鎵瑰鐞绉诲姩鏂囦欢鍒鍚屽悕鏂囦欢澶,姹傜紪绋嬭揪浜!
    绛旓細Echo Off&Setlocal EnabledelayedexpansionFor /f "tokens=*" %%i in ('Dir /a-d /b "%~dp0*.jpg"') do (Set fn=%%i&Set fn1=!fn:~1,5!move "%%i" !fn1!\)Pause浠pg鍥鹃潰涓轰緥.鎶鎵瑰鐞鏀惧埌浣犺澶勭悊鐨鏂囦欢涓.Echo Off&Setlocal EnabledelayedexpansionPushd D:\weipian\15For /f...
  • 鎬庝箞鐢鎵瑰鐞嗗鍒舵枃浠跺す涓嶆浛鎹鍚屽悕鏂囦欢澶
    绛旓細鍋囪鎶奵:\work閲岀殑鏂囦欢澶瑰鍒鍒癲:\back锛屼笉鏇挎崲鍚屽悕鏂囦欢澶 echo offset s=c:\workset d=d:\backpushd %s%for /f "tokens=*" %%i in ('dir/b/ad') do (if not exist "%d%\%%i" xcopy "%s%\%%i" "%d%\%%i" /s /y)
  • ...鎵瑰鐞 鎷疯礉鏂囦欢鐨勬椂鍊,鐩爣鏂囦欢澶濡傛灉鏈鍚屽悕鏂囦欢鐨勮瘽,浼氬崱鍦ㄩ偅杈...
    绛旓細xcopy 浣跨敤鍙傛暟 /y 灏卞彲浠ヨ嚜鍔ㄧ‘璁よ鐩栵紝浣跨敤鍙傛暟 /d 鍙互鍙敤鏂扮殑瑕嗙洊鏃х殑
  • 鎵瑰鐞 闅忔満澶嶅埗鎵闇瑕佹暟閲忕殑鏂囦欢 鍚屽悕鏂囦欢鑷姩閲嶅懡鍚
    绛旓細copy "%%~A" "d:\2\%%~nxA") ELSE (copy "%%~A" "d:\2\%%~nA_%B%%%~xA"))pause --- PS:浠ヤ笂浠g爜澶勭悊鎵鏈鏂囦欢 閲嶄簡鑷姩鏇村悕锛屼互10涓殢鏈烘暟 淇敼銆'dir/a-d/s/b D:\*.???1'銆戝叾鍐呯殑锛堬紵锛夊彿涔熻鏄枃浠 鐨勬墿灞曞悕锛屼綘鍙互澶勭悊涓嶅悓鏂囦欢銆
  • ...涓鏃閲嶅悕,灏辨妸鐩爣鍦板潃鐨鍚屽悕鏂囦欢澶嶅埗鍒颁竴涓叾浠栫殑鏂囦欢澶涓媉鐧惧害鐭...
    绛旓細echo off::璁剧疆A鐩綍璺緞set A=A::璁剧疆B鐩綍璺緞set B=B::璁剧疆C鐩綍璺緞set C=Csetlocal enabledelayedexpansionCall :GetFullPath "%A%" "%B%" "%C%"for /f "delims=" %%a in ('dir /a-d/s/b "%B%"') do ( set "str=%%~a" if exist "!str:%B%=%A%!" ( se...
  • 鎵瑰鐞涓や釜鏂囦欢澶瀵规瘮閫夊嚭鐩稿悓鏂囦欢,A澶嶅埗鍒癇?
    绛旓細涓嶆竻妤氫綘鐨勫疄闄呮枃浠/鎯呭喌锛屼粎浠ラ棶棰樹腑鐨勮鏄庡強鐚滄祴涓烘嵁锛涗互涓嬩唬鐮澶嶅埗绮樿创鍒拌浜嬫湰锛屽彟瀛樹负xx.bat锛岀紪鐮侀堿NSI锛孉鍜孊鏂囦欢澶归渶璁句负鍏变韩鏂囦欢澶 <# :cls&echo off&cd /d "%~dp0"&mode con lines=5000rem 瀵规瘮涓ゅ彴鐢佃剳閲岀殑涓や釜鏂囦欢澶癸紝鎵惧嚭鐩稿悓鍚嶇О鐨鏂囦欢锛灏嗕竴涓枃浠跺す閲岀殑鍚屽悕鏂囦欢鏇挎崲鎺夊彟涓...
  • ...鎵瑰鐞鍛戒护灏鏂囦欢澶B鍐呮墍鏈夊瓙鏂囦欢澶逛笅鐨鏂囦欢澶嶅埗鍒版枃浠跺すA涓嬬殑鍚屽悕...
    绛旓細echo offset @=Q&set/an=0x53b7e0b4title +%@%%@% %n%set "鏂囦欢澶1=D:\test\B"set "鏂囦欢澶2=D:\test\A"for /f "delims=" %%a in ('dir /ad /b "%鏂囦欢澶1%"') do ( for /f "delims=" %%b in ('dir /ad /b "%鏂囦欢澶2%\*%%a"') do ( copy "%鏂囦欢澶1%\...
  • bat鍛戒护 澶嶅埗鏂囦欢鍒版煇涓鏂囦欢澶,濡傜洰鏍囨枃浠跺す鍐呮湁鍚屽悕鏂囦欢,鑷姩鍋滄澶嶅埗...
    绛旓細閭h鍙﹀鍒涘缓涓涓獀bs鏂囦欢锛浠g爜濡備笅锛歴et ws=wscript.createobject("wscript.shell")ws.run "浣犺闅愯棌鐨刡at鐨勫悕瀛.bat /start",0wscript.quit澶嶅埗浠g爜鍒拌浜嬫湰锛屼繚瀛樺悗闄嶆枃浠跺悗缂鍚嶆敼涓簐bs锛屾斁鍦ㄨ繖涓猙at鏃佸氨鍙互浜嗭紝浠ュ悗鎵撳紑杩欎釜vbs灏辩瓑浜庢墦寮浜哹at锛屼笖涓嶅脊鍑篶md绐楀彛銆俠at浠g爜濡備笅锛歟cho offecho n|...
  • 鎵瑰鐞嗗悓鍚嶆枃浠
    绛旓細鎵瑰鐞嗗彲浠ュ疄鐜,鎶婁互涓嬫壒澶勭悊鏀惧埌鐓х墖涓荤洰褰曢噷杩愯灏卞彲浠ユ妸鎵鏈夌Щ鍔ㄥ埌鏂扮殑鏂囦欢澶閲岋紝鐩稿悓鐨勫氨涓嶄細鍑虹幇浜嗐傛浛鎹㈡枃浠舵壒澶勭悊 echo off md new for /f "delims=" %%i in ('dir /b/s *.jpg')do move "%%i" "%~pd0new"涓嶆浛鎹鏂囦欢鎵瑰鐞,鏂囦欢閲嶅懡鍚嶄负0001.jpg 0002.jpg ...echo off&setlocal ...
  • 扩展阅读:一键复制所有文件名 ... 批处理批量改文件名 ... 打开文件 ... 一次复制多个文件名 ... 同名文件已存在怎么办 ... 把复制的文字做成文件 ... 批处理命令复制文件 ... 文件被复制会留痕迹吗 ... 复制同名文件保留两个文件 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网