Board logo

标题: [文件操作] 【已解决】BAT:如何批量删除文件夹内特定的文本 [打印本页]

作者: 思想之翼    时间: 2015-11-2 22:48     标题: 【已解决】BAT:如何批量删除文件夹内特定的文本

本帖最后由 思想之翼 于 2015-11-6 23:04 编辑

有若干文件夹,每个文件夹内有一批txt文本,文本名称如下
wj1苏州-64值-记录期
wj3苏州-114值-记录期
wj12苏州-86值-记录期
...
现在欲删除文本名称中“值”字前面为3位数的文本(比如上列中的 wj3苏州-114值-记录期),也即倒数第9个字符是"_"的文本。这样的代码如何写?
作者: 依山居    时间: 2015-11-3 08:29

学习正则表达式和awk用不了多少时间的。
作者: WHY    时间: 2015-11-3 09:07

  1. for /f "delims=" %%i in ('dir /b /s /a-d *.txt^|findstr /i "\-[0-9][0-9][0-9]值\-记录期\.txt$"') do del "%%i"
  2. pause
复制代码

作者: 依山居    时间: 2015-11-3 09:23

  1. @echo off
  2. :: 现在欲删除文本名称中“值”字前面为3位数的文本(比如上列中的 wj3苏州-114值-记录期),也即倒数第9个字符是"_"的文本。这样的代码如何写?
  3. :: http://www.bathome.net/thread-37925-1-1.html
  4. :: everything 的命令行工具es 搜索文件很好用。
  5. :: http://www.bathome.net/thread-37744-1-1.html
  6. ::生成测试用的空文件
  7. echo;>wj1苏州-64值-记录期.txt
  8. echo;>wj3苏州-114值-记录期.txt
  9. echo;>wj12苏州-86值-记录期.txt
  10. echo es 搜索文件用法,开启正则的时候\是转义符,所是双斜杠\\
  11. es -r "D:\\temp\\stringtie\\.*-[0-9]{3}值-记录期\.txt"
  12. echo ==============
  13. echo.
  14. echo 可以只搜索文件名,可以搜索到硬盘上文件名匹配的文件
  15. es -r ".*-[0-9]{3}值-记录期\.txt$
  16. echo ==============
  17. echo.
  18. echo 以下是放在for 中执行
  19. for /f "tokens=*" %%a in ('es -r  "D:\\temp\\stringtie\\.*-[0-9]{3}值-记录期\.txt"') do (
  20. echo 要删除%%a
  21. echo del %%a 只是测试用,自行修改删除命令
  22. )
  23. pause
复制代码





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