[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. title 批量替换文件(夹)名的部分字符串
  3. echo.
  4. echo 本批处理可批量替换文件名中部分字符串,不处理子目录
  5. echo.
  6. :AA
  7. set str=%~dp0
  8. set /p "str=输入路径(直接回车,则默认批处理所在路径):"
  9. cd /d "%str%"
  10. echo. &echo 当前路径为 %str%
  11. :S
  12. setlocal enabledelayedexpansion
  13. echo. & echo 当要替换的文件输入为*A这种形式,且替换为空时,会自动删除字符A以前的所有字符(包含字符A)
  14. echo.&set /p strtemp1= 请输入要替换的文件(文件夹)名字符串(可替换空格):
  15. echo.&set /p strtemp2= 请输入替换后的文件(文件夹)名字符串(删除,则直接回车):
  16. echo.
  17. echo 正在修改文件(夹)名中请稍候……
  18. for /f "delims=" %%i in ('dir /a /b') do (
  19. set "f=%%~ni" ::将变量i扩展到文件名,并赋值给f
  20. set "k=%%~xi" ::将变量i扩展到后缀,并赋值给k
  21. set "f1=!f:%strtemp1%=%strtemp2%!" ::将f中的字符串1替换成字符串2,并赋值给f1
  22. if not "%%i"==%0 (
  23. if not "!f!!k!"=="!f1!!k!" (
  24. if exist "!f1!!k!" (
  25. echo 由于!f1!!k!存在同名,!f!!k! 文件名未改 ) else ren "!f!!k!" "!f1!!k!"
  26. )
  27. )
  28. )
  29. echo.
  30. echo 替换完成。。。。。。
  31. endlocal ::结束变量延迟
  32. echo.
  33. echo ===========================================================
  34. echo.& echo 【1】……更换路径
  35. echo.& echo 【2】……继续在当前目录替换
  36. echo.
  37. set /p "xuan= 请选择【1】或【2】:"
  38. echo.
  39. if %xuan% equ 1 goto AA else(
  40.     if %xuan% equ 2 goto S
  41. )
  42. echo.&pause
复制代码
我一直在用的,替换文件名中部分字符串

TOP

  1. @echo off
  2. echo. & echo 注意,被处理的文本编码必须是ANSI编码方式,UTF-8编码或其他编码的文本是无法通过批处理替换其内的内容的。
  3. echo. & echo 输入文件名和后缀请按照(test.txt)的方式输入,本批处理不能处理多个文本,只能处理单个文本
  4. echo. & set /p "st=请输入要处理的文件名和后缀(例如file.txt):"
  5. echo. & set /p "str1=请输入想要替换的内容(可替换空格,部分特殊符号替换失败,需要在符号前加^):"
  6. echo. & set /p "str2=请输入替换后的内容(直接回车,则是删除文本):"
  7. echo. & echo 在替换中,请稍等。。。。。。
  8. (for /f "delims=" %%i in (%st%) do (
  9. set str=%%i
  10. call call set "str3=%%%%str:%%str1%%=%%str2%%%%%%"
  11. call echo %%str3%%
  12. )
  13. )>>"%st:~,-4% 副本.txt"
  14. echo. & echo 替换完成,已在批处理所在目录保存为副本
  15. echo. & pause
复制代码
是我搞错了你的需求,我以为你要处理的是文件名,原来要处理的是文本中的内容。对于文本中的内容,其实最好直接用查找替换。
上面的代码是针对单个文本的,稍后我会贴出针对多个文本的批量处理代码
注意被处理的文本必须是ANSI编码方式,要不然是会出现乱码的

TOP

  1. @echo off
  2. echo. & echo 注意,被处理的文本编码必须是ANSI编码方式,UTF-8编码或其他编码的文本是无法通过批处理替换其内的内容的。
  3. echo. & echo 本批处理可以一次性处理多个文件,处理后的文本会生成副本文件,原文件不会删除
  4. echo. & echo 本批处理默认处理txt文本,不需要指定格式
  5. echo. & set /p "str1=请输入被替换字符串:"
  6. echo. & set /p "str2=替换为:"
  7. echo. & echo 正在替换中,请稍等。。。。。。
  8. for /f "delims=" %%i in ('dir /b *.txt') do (
  9. (for /f "delims=" %%j in (%%i) do (
  10. set "str3=%%j"
  11. call call set "str4=%%%%str3:%%str1%%=%%str2%%%%%%"
  12. call echo %%str4%%
  13. )
  14. )>>"%%~ni 副本.txt"
  15. )
  16. echo. & echo 替换完成,已在批处理所在目录生成新的副本文件
  17. echo. & pause
复制代码
多文件版,默认处理txt文本,每次只能替换一种字符串,批处理不会删除源文件,会直接在批处理所在目录生成副本文件。如果有多个字符串需要替换,多次处理即可。

TOP

回复 7# DDDYJQ1


    你最好贴一个附件上来,手头没有测试文本,不知道你要处理的文本内到底是什么样的

TOP

返回列表