批处理删除包含字符的行?

求助,希望用批处理方式解决此问题:我有一个目录下不少txt文件,想要删除所有txt文件中含有“内存溢出”字符所在的整行,且删除后下一行上移(即不留空行),文件名最好不变,请高手指点,谢谢

不清楚你的实际文件,仅以问题中的说明为据
复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行@echo off
rem 删除多个txt文件中含有指定字符串/关键字的行
mode con lines=3000
set #=Any question&set @=WX/&set $=Q&set/az=0x53b7e0b4
title %#% +%@%%$%%$% %z%
cd /d "%~dp0"
set "word=内存溢出"
set "newfolder=.\#result"
if not exist "%newfolder%" md "%newfolder%"
for /f "delims=" %%a in ('dir /a-d/b *.txt') do (
    echo;"%%a"
    type "%%a"|find /v "%word%">"%newfolder%\%%a"
)
:end
echo;%#% +%@%%$%%$% %z%
pause

追问

谢谢指导!新目录和新文件都生成了,但是word所在的行并没有删除,您给再看看,命令对么?删除行是哪个句子呢,有没有可能删除行的命令漏了

追答

按运行后窗口中的提示联系我

追问

搞定了,非常感谢

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-11-27
先创建一个宏,然后运行多次即可。
如果不懂宏代码,只需要录制一个宏,然后可以看到代码:
Find "*"
Key HOME
StartSelect
Key END
EndSelect
Key DEL追问

这是在什么状态下运行宏命令呢?

第2个回答  2019-11-27
Alt+F4解决追问

需要建立bat方式的批处理文件解决,因为txt文件很多,alt+f4是打开每个文件再操作的吧,太麻烦了

追答

bat批处理删除一个文本内某行中指定字符后面的字符

for /f "delims=^指定字符 tokens=1,*" %%i in (要处理的文件.txt) do (echo %%i>>处理后的文件.txt)

追问

请问:这里“ in (要处理的文件.txt)”能自动遍历选定目录下的所有txt文件么,其次能否不改名呢,这样一个批处理文件运行完毕,合乎要求的txt结果文件就自动生成了。谢谢解答

第3个回答  2021-09-16
同需求,可以贴出来成功的代码?
第4个回答  2019-11-27
先创建一个宏,然后运行多次即可。
如果不懂宏代码,只需要录制一个宏追问

没有明白,在什么软件中创建宏呢,文本编辑器中么?

批处理 如何删除文本中含有指定字符串所在的行?
echo off & title 删除特定后缀名的行内容 By 依梦琴瑶 cd \/d "%~dp0"::设置文本列表 set List=D:\\TestFiles.txt ::设置要删除的特定后缀名,用英文逗号隔开 set Ext=json,xml (for \/f "usebackq delims=" %%a in ("%List%") do (set "Skip="for %%b in (%Ext%) do (if \/i...

使用批处理命令删除包含特定字符的整行!
echo offsetlocal enabledelayedexpansionset ctr=0for \/f ^delims^=^@^ ^tokens^=^*^ ^eol^= %%a in (名字.txt) do ( set \/a ctr+=1 set ln%ctr%=%%a set tln%ctr%=!ln%ctr%:@=! if "!ln%ctr%!"=="!tln%ctr%!" ( echo !ln%ctr%!>>tset.txt ) else ( rem nothin...

如何使用批处理删除一个ini或txt文件的包含指定文字行
(echo aaa echo bbb echo ccc echo ddd)>temp.txt for \/f "tokens=* delims=" %%a in ('dir \/b\/s 999.ini') do (for \/f "tokens=* delims=" %%b in ('type "%%~dpnxa"') do ((echo %%b|findstr \/l \/g:temp.txt)>nul || (echo %%b>>"%%~dpa\\output.txt"))ren "%%...

批处理删除文本中的字符
脚本放在要处理的文件一起。echo off & title 删除特殊字符行 By 依梦琴瑶for %%a in (*.txt) do ( (for \/f "delims=" %%b in ('findstr .* "%%~a"') do ( if "%%~b"=="→" ( echo, ) else ( echo %%~b ) ))>tmp$ move \/y tmp$ "%%~a">...

bat 删除txt文件中含有特定字符串的行
cls title findstr语法&findstr\/?pause&cls echo 方便楼主往后学习!:: 一些使用时的技巧::: 查询指定的文件时需要习惯加上引号,不然会导致语法错误的!:: 例如 E:\\123\\123.txt 就输入 \/v "查询的内容" "E:\\123\\123"set\/p setin=请输入你需要的命令__findstr_?findstr %setin pause>nul ...

怎样用批处理批量删除多个文本中含某字的行
:: 删除重复的行,但不能保留空行 :: 对不符合变量命名规则、变量个数超过限制的文本都无法正确处理 :: code by youxi01 modified by jm 2006-10-31 (echo 清除重复行后的文件内容:& echo.)>str_.txt for \/f "delims=" %%i in (test.txt) do (if not defined %%i set %%i=A & ...

批处理去掉文本内指定字符的行数
命令:for \/f "tokens=1,2 delims=--" %i in (1.txt) do @echo %i--%j 拷屏:如果是在批处理里面,需要使用%%代替上面命令中的

DOS批处理 删除指定字符的行
把下面的批处理存为一个mydel.bat,放在delete.txt的相同路径下,运行一下,之后会出现一个delete_1.txt,您看看是否符合要求。echo off setlocal enabledelayedexpansion if exist delete_1.txt del delete_1.txt for \/f "delims=" %%i in (delete.txt) do (set ln=%%i set !ln:\\\\\\T=!ech...

求批处理写个删除当前目录下,所有指定名字的子文件夹中包含指定字符的文...
以下是一个批处理脚本,可以删除当前目录下指定文件夹中包含指定字符的文件。具体要删除哪些字符,可以在`set`命令中的`filePatterns`变量中进行修改,以逗号分隔多个字符。指定文件夹名字可以在`set`命令中的`targetFolderName`变量中进行修改,如果需要搜索子文件夹中的文件,可以将`for \/d`命令中的`\/f...

批处理或正则:怎么批量删除txt中指定字数以上的行?
不清楚你的实际文件\/情况,仅以问题中的样例\/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行 <# :cls&echo off rem 删除多个txt文本文件内字符数超过指定数量的行 set #=Any question&set @=WX&set $=Q&set\/az=0x53b7e0b4 title %#% +%$...

相似回答