[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】求BAT脚本删除文件夹下所有包含相同字符的TXT文件

本帖最后由 kissmylove 于 2024-3-3 12:54 编辑

举例 一个文件夹A下有很多子文件夹,每个子文件夹下包含1个TXT文本,有的文本内容是 刘德华唱歌真好听,有的内容是张学友唱歌真好听,现在想要批量删除文件夹A下所有内容是"张学友唱歌真好听"的TXT文本,删除后相对应的文件夹就会变为空文件夹,这些空文件夹也要删掉
求大佬们教下 要怎么做这个BAT

  1. @echo off
  2. for /f "delims=" %%i in ('dir /ad /b') do (
  3.     find /i "张学友唱歌真好听" "%%i\*.txt" >nul && rd /q/s "%%i"
  4. )
  5. pause
复制代码

QQ 20147578

TOP

回复 1# kissmylove

文件内容是abc和文件包含abc是两码事。楼主指的是...

TOP

回复 2# czjt1234


   大佬用了你的没有反应。。。。

TOP

回复 3# aloha20200628
文件内容是纯中文加一个句号

TOP

本帖最后由 aloha20200628 于 2024-3-1 19:06 编辑

回复 5# kissmylove

假定目标目录是 d:\a,目标文件是其子目录中且只在子目录中的*.txt文件
  1. @echo off &for /f "delims=" %%F in ('dir /b/s/a-d d:\a\*.txt') do (
  2.     (find "张学友唱歌真好听。" "%%~F">nul) && (rd /s /q "%%~dpF")
  3. )
复制代码

TOP

本帖最后由 aloha20200628 于 2024-3-1 19:57 编辑

回复 5# kissmylove

建议楼主先复制一个小范围样本试行6楼代码,成功无误后再继续...
如果主目录 d:\a  仅有子目录且只有一层子目录,用6楼代码应该可以,如主目录中还有文本文件,有可能会出错,此时请改用如下代码
  1. @echo off &for /f "delims=" %%F in ('dir /b/s/a-d d:\a\*.txt') do (
  2.     (find "张学友唱歌真好听。" "%%~F">nul) && (if /i "%%~dpF" neq "d:\a\" (rd /s /q "%%~dpF") else del /q "%%~F")
  3. )
复制代码

TOP

回复 4# kissmylove


   你的文本是什么编码格式?如果是utf-8,将2楼代码保存为utf-8编码,代码开头加 chcp 65001
bat小白,请多指教!谢谢!

TOP

回复 1# kissmylove


    请把测试用的“文件夹A”打包压缩上传到网盘,我试试。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Batcher


    哥哥 网盘在哪里呀 是哪个网盘

TOP

本帖最后由 czjt1234 于 2024-3-2 09:46 编辑

回复 10# kissmylove


    百度网盘
  1. @echo off
  2. for /f "delims=" %%i in ('dir /ad /b') do (
  3.     find /i "张学友唱歌真好听" "%%i\*.txt" >nul && rd /q/s "%%i"
  4. )
  5. chcp 65001
  6. for /f "delims=" %%i in ('dir /ad /b') do (
  7.     find /i "张学友唱歌真好听" "%%i\*.txt" >nul && rd /q/s "%%i"
  8. )
  9. pause
复制代码

QQ 20147578

TOP

本帖最后由 aloha20200628 于 2024-3-2 13:03 编辑


若真是数据文件编码问题所致,则是“三点一线”的老生常谈,只要确保数据文件编码和批处理脚本编码与系统当前码页相同就可以了》例如 chcp 936对应简中编码的数据文件和简中编码的脚本文件;chcp 65001对应utf-8编码的数据文件和utf-8的脚本文件。
但若与目录结构有关,例如类似下面所示
D:\A
├─目录1
│      1a.txt

└─目录2
        2a.txt

则用6楼代码就没问题(假设数据文件是简中编码)
若目录结构类似下面所示
D:\A
│  a.txt
│  b.txt

├─目录1
│  │  1a.txt
│  │
│  └─目录11
│          11a.txt

└─目录2
    │  2a.txt
    │
    └─目录21
            21a.txt

可改用如下代码尝试(本代码亦可用于第一种目录结构),如果每个子目录中的数据文件均被匹配成功即可删除该数据文件及其所在目录
  1. @echo off
  2. ::若数据文件和本脚本文件是简中编码则删除下一行
  3. chcp 65001>nul&cls
  4. ::设置目标根目录如下
  5. set "rootD=d:\a"
  6. for /f "delims=" %%F in ('dir /b/s/a-d "%rootD%\*.txt"^|sort /r') do (
  7.     (find "张学友唱歌真好听。" "%%~F">nul) && (
  8.     (del /q "%%~F") & if /i "%%~dpF" neq "%rootD%\" (rd /q "%%~dpF")
  9.     ) 2>nul
  10. )
复制代码

TOP

回复 10# kissmylove


百度:https://pan.baidu.com
蓝奏:https://www.lanzou.com
腾讯:https://www.weiyun.com 需要登录才能下载
阿里:https://www.aliyundrive.com 需要登录才能下载
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Batcher

谢谢大佬 已经上传到网盘了  链接:https://pan.baidu.com/s/1vD_bchzY56BEDdAXsaxTZg
提取码:yp9z

TOP

本帖最后由 aloha20200628 于 2024-3-2 14:46 编辑


自己模拟了一个样本测试环境,包括简单目录结构和复杂目录结构(如12楼示例),最终用以下代码(用记事本存为utf-8编码的test.bat运行即可)测试均予通过...
  1. @echo off
  2. ::若数据文件和本脚本文件是简中编码则删除下一行
  3. chcp 65001>nul&cls
  4. ::设置目标根目录如下
  5. set "rootD=D:\a"
  6. (for /f "delims=" %%F in (' dir /b/s/a-d "%rootD%\*.txt" ') do (
  7. (find "此用户没有填写评价。" "%%~F") && (del /q "%%~F")
  8. ))>nul 2>nul
  9. (for /f "delims=" %%D in ('dir /b/s/ad "%rootD%\"^|sort /r') do (rd /q "%%~D")) 2>nul
  10. exit/b
复制代码

TOP

返回列表