标题: [文本处理] [己解决]批处理怎样删除文件夹含指定字符串的文本 [打印本页]
作者: keshun 时间: 2019-9-1 16:11 标题: [己解决]批处理怎样删除文件夹含指定字符串的文本
在“存档”文件夹内有几百个文本,删除一些内含字符串“物品分布定义”的文本,求代码,谢谢!!!
作者: Batcher 时间: 2019-9-1 16:30
如果某个文件包含“物品分布定义”,删除这个文件本身。
如果某个文件包含“物品分布定义”,在这个文件里面删除“物品分布定义”这个字符串。
你需要的是哪种效果?
作者: keshun 时间: 2019-9-1 16:53
本帖最后由 keshun 于 2019-9-1 17:53 编辑
回复 2# Batcher
第1个,比如文件夹里有200个文本,有88个文本,每个前15行有包含“物品分布定义”要删除本身,剩下的文本有112个不含字符串。
作者: impk 时间: 2019-9-1 17:40
- @echo off
- for /r %%i in ( *.txt ) do (
- del /s/q *物品分布定义.txt
- del /s/q 物品分布定义*.txt
- )
- pause
复制代码
先备份“存档”文件夹
再把批处理放到“存档”文件夹里运行
作者: keshun 时间: 2019-9-1 17:55
回复 4# impk
谢谢,不是文本名含字符串,而是文本前15行内含有字符串。
作者: impk 时间: 2019-9-1 18:12
本帖最后由 impk 于 2019-9-1 18:23 编辑
回复 5# keshun - @echo off & setlocal enabledelayedexpansion
- for /f %%a in ( 'dir /a-d /b *.txt' ) do (
- type %%a|findstr /c:"物品分布定义" && set var=%%a
- del /s/q !var!
- )
- pause
复制代码
先备份,再试试这个
在我机器上测试
像1.txt和a.txt这种可以正常删除
像“新建 文本文档.txt”这种名称中有空格的无法删除
作者: flashercs 时间: 2019-9-1 18:19
- @echo off
- pushd "%~dp0"
- for /f "delims=" %%A in ('findstr /lm "物品分布定义" *.txt') do (
- del /f /q "%%A"
- )
- popd
- pause
- exit /b
复制代码
作者: terse 时间: 2019-9-1 21:52
不是说前15行吗- Get-ChildItem *.txt | ? { !$_.PSIsContainer } | ? {
- [string]$str = Get-Content $_ -TotalCount 15
- if ($str.contains("ABC")) {
- $file = $_.FullName
- Remove-Item $file
- }
- }
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |