(建议用电脑浏览本文效果更好)
自己编写的一个DOS批处理 , 用于批量修改文件名或扩展名 。
实现逻辑:
文章插图
操作:批处理运行后会在当前文件夹下生成一个错误信息文件batResult.txt
字符替换:
示例一:将文件名中的“5”替换成“99”
文章插图
原文件
运行批处理文件batRename2.bat:
文章插图
结果:
文章插图
示例二:将“废柴兄弟”改成“上海滩” , 并将扩展名改为“bat”
文章插图
操作:
文章插图
结果:
文章插图
改成新文件名:将所有扩展名为bat文件改成新文件名newBAT , 后缀改为ttt
文章插图
操作:
文章插图
结果:
文章插图
文章插图
程序实现方法一:
@echo offrem 切换为utf-8编码::Chcp 65001::切换中文Chcp 936 > nulrem 启用延缓环境变量扩展setlocal EnableDelayedExpansionecho **可修改当前文件夹下所有的文件名或字符及扩展名**echo *****将此批处理文件拷入需要修改的文件夹中******set option=9set cnt=0set skipChar=/*?:"<>|^!echo **请选择操作...**echo ** 1 替换部分字符或扩展名 **echo ** 0 换成全新文件名**:selectOptionset /p option= 》》请选择操作选项:if %option%==1 ( goto endSelectOption) else if %option%==0 (goto endSelectOption) set /a cnt+=1if %cnt% GTR 2 (goto end) else (goto selectOption):endSelectOptionecho ------要修改的原文件信息 , 回车结束输入-------set retVal=0:inputOfiset oldFile=set retVal=0if %option%==1 (set /p oldFile="》》请输入要替换的文件名/文字(必输入):") else (set /p oldFile="》》请输入要修改的文件名/文字(不输入则包括当前文件夹下所有文件): ")if %option%==1 (if "%oldFile%"=="" echo 被替换字符不能为空!& goto inputOfi ) else (if "%oldFile%"=="*"goto inputOfe if "%oldFile%"=="" ( set oldFile=*goto inputOfe))@echo !oldFile! | findstr "[!skipChar!]" > nulif "!errorlevel!"=="0" (echo !!输入的文件名/字符"!oldFile!"错误!!rem 如果用%skipChar%则出现“此时不应有 >”的错误提示 。echo !!字符中不能包含"!skipChar!"中的字符 !!goto inputOfi):inputOfeset oldFExt=set retVal=0set /p oldFExt= 》》请输入原文件扩展名(不输入则包括所有扩展名):if "%oldFExt%"=="*" goto endInputOfeif "%oldFExt%"=="" (set oldFExt=*) else (@echo !oldFExt!| findstr "[^0-9A-Za-z]" > nul if "!errorlevel!"=="0" (echo !!扩展名"%oldFExt%"错误!!echo !!请输入0-9,A-Z,a-z之间的字符!!goto inputOfe)):endInputOfeecho === 查找范围:"*!oldFile!*.!oldFExt!" ===echo -----新的文件信息 , 回车结束输入------:inputNfiset newFile=set retVal=0set /p newFile="》》请输入新的文件名/字符(必输入):"if not "%newFile%"=="" ( @echo !newFile! | findstr "[!skipChar!]" > nul if "!errorlevel!"=="0" (echo !!输入的文件名/字符"%newFile%"错误!!echo !!字符中不能包含"!skipChar!"中的字符 !!goto inputNfi)) else (echo 新的文件名/字符不能为空!& goto inputNfi):inputNfeset newFExt=set retVal=0if %option%==1 (if "!oldFExt!"=="*" (goto endInputNfe ))set /p newFExt="》》输入新的文件扩展名(不输入则保留原扩展名):")if "!newFExt!" neq "" ( @echo !newFExt!| findstr "[^0-9A-Za-z]" > nul if "!errorlevel!"=="0" (echo !!扩展名"%newFExt%"错误!!echo !!请输入0-9,A-Z,a-z之间的字符!!goto inputNfe)):endInputNfeecho === 查找范围: "*!oldFile!*.!oldFExt!" ===if %option%==1 (if "%newFExt%" neq "" (echo === 替换为:"*!newFile!*.!newFExt!" ===) else (echo === 替换为:"*!newFile!*.原扩展名" === )) else (if "%newFExt%"=="" (echo === 新的内容为:"!newFile!000N.原扩展名" === ) else (echo === 新的内容为:"!newFile!000N.!newFExt!" ===))rem --------------------处--理-------------------------set ttl=0set a=1set aStr=0001set /p confirm=请确认是否修改?(输入:Y-是 , N-否)if "%confirm%" neq "Y" (if "%confirm%" neq "y" goto end)rem set oft="%oft%.%oldFExt%"for /f "delims="%%i in ( 'dir /b /a-d "*%oldFile%*.%oldFExt%" ' ) do (if "%oldFile%"=="*" (@echo %%~ni | findstr /i ".%oldFile%" > nul) else (@echo %%~ni | findstr /iL /c:"%oldFile%" > nul)if "!errorlevel!"=="0" (rem 不需修改当前批处理文件名(本身)if not "%%~ni"=="%~n0" ( set /a ttl+=1 ::只有文件名 , 如test.txt时 , 只有testset file=%%~ni ::只有扩展名 , 如test.txt时 , 只有.txt set ext=%%~xiif !option!==1 (set file=!file:%oldFile%=%newFile%!if "%newFExt%"=="" (ren "%%i" "!file!!ext!" 1>> batResult.txt 2<&1if "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!!ext!"-- >>batResult.txt) else (set /a a+=1)) else (ren "%%i" "!file!.%newFExt%" 2>> batResult.txtif "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!.%newFExt%"-- >>batResult.txt) else (set /a a+=1)) ) else (set file=%newFile%!aStr!if "%newFExt%"=="" (ren "%%i" "!file!!ext!" 1>> batResult.txt 2<&1if "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!!ext!"-- >>batResult.txt) else (set /a a+=1if !a!LSS 10 (set aStr=000!a!) else if !a! LSS 100(set aStr=00!a!) else if !a! LSS 1000 (set aStr=0!a!))) else (ren "%%i" "!file!.%newFExt%" 2>> batResult.txtif "!errorlevel!" neq "0" ( echo --原文件"%%i",新文件名"!file!.%newFExt%"-- >>batResult.txt) else (set /a a+=1if !a!LSS 10 (set aStr=000!a!) else if !a! LSS 100(set aStr=00!a!) else if !a! LSS 1000 (set aStr=0!a!))) )rem echo a=!a!,oldFile-^> newFile:"%%i" -^> "!file!.%newFExt%"))):endset /a a-=1echo 总处理文件数:!ttl! ,处理成功数:!a!endlocalpausegoto :eof
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 电脑忘记开机密码,用这几招10秒就能解决
- 家里网速总是卡?维修师傅教你3个小技巧,让网络重回顺畅感觉
- 用Python删除电脑中的重复文件!竟然这么简单
- 电脑残留垃圾清除:执行1行代码轻松搞定!无需杀毒软件
- 红茶里面的成分,天天清大茶的功效和作用
- 肾里面有结石怎么办
- 盘点十大装逼男
- 亲密前男人最爱女人哪里
- 翡翠|和田玉籽料里面的瑕疵您最不能接受那种?脏?棉?裂?僵?
- 如何更改电脑的开机密码