Board logo

标题: [文本处理] BAT怎么批量删除文件名两个字符中间的内容,包含字符 [打印本页]

作者: ColorRazer    时间: 2020-8-5 15:36     标题: BAT怎么批量删除文件名两个字符中间的内容,包含字符

文件名中有很多是带有一些备注,备注在两个#号直接,如何批量删掉两个#号及#号之间的内容,谢谢大家
作者: ColorRazer    时间: 2020-8-5 15:47

有的是删除#前面的内容,有的是删除#后边的内容,有的是删除;两个#之间的内容,求大神们分成三个批处理
作者: wujunkai    时间: 2020-8-5 18:10

本帖最后由 wujunkai 于 2020-8-5 18:28 编辑

所有的文件名都有两个#号吗?
假设所有文件名都带两个#号
  1. @echo off
  2. call:test
  3. set /P=请理解代码逻辑后自行修改调用
  4. goto:eof
  5. :del_front
  6.     rem 文件名用%~1传递
  7.     rem 处理过的文件名储存在 %new_file% 中
  8.     set "old_file=%~1"
  9.     for /F "tokens=1,2,3 delims=#" %%a in ("%old_file%") do set "new_file=%%b#%%c"
  10. goto:eof
  11. :del_middle
  12.     rem 逻辑同上
  13.     set "old_file=%~1"
  14.     for /F "tokens=1,2,3 delims=#" %%a in ("%old_file%") do set "new_file=%%a%%c"
  15. goto:eof
  16. :del_back
  17.     rem 逻辑同上
  18.     set "old_file=%~1"
  19.     for /F "tokens=1,2,3 delims=#" %%a in ("%old_file%") do set "new_file=%%a#%%b%~x1"
  20. goto:eof
  21. :test
  22.     rem 测试代码
  23.     set "example=one#two#three.jpg"
  24.     echo 原文件名       %example%
  25.     call:del_front  "%example%"
  26.     echo 删去第一部分   %new_file%
  27.     call:del_middle "%example%"
  28.     echo 删去第二部分   %new_file%
  29.     call:del_back   "%example%"
  30.     echo 删去第三部分   %new_file%
  31. goto:eof
复制代码
直接运行肯定不行,请修改后运行
作者: ColorRazer    时间: 2020-8-11 17:45

#搞笑#今天来到公司
#搞笑#打卡第一天
#搞笑#刷马桶
#搞笑#中午吃饭

举例以上是四个文件夹名,想批量删掉“#搞笑#”。两个#号中间不一定有多少字符,有多有少。
作者: Batcher    时间: 2020-8-11 19:59

回复 4# ColorRazer


举例4.bat
  1. @echo off
  2. for /f "tokens=1,* delims=#" %%i in ('dir /b /ad #*#*') do (
  3.     ren "#%%i#%%j" "%%j"
  4. )
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2