如何通过批处理文件从文本文件中删除不需要的行?

4

我有一个文本文件,包含以下内容和一些不需要的行,我想从文本文件中删除它们。

1233,pqry,01/11/2011
2365698,abcd,2011/01/12
,defghj,11/12/2013
,,,
,,,
,,,

在上面的例子中,我们可以看到有多个逗号分隔的行。我想通过批处理文件从我的文本文件中删除这些行。请帮助我。


你想要去掉 ,,, 行吗? - npocmaka
你的代码行不是用逗号分隔的。每行之间应该用回车换行符分隔。 - Endoro
@npocmaka:是的,我想要去掉只有逗号而没有其他值的行。 - Samraan
1个回答

5
ren myFile.txt myFile.txt.old
findstr /v /b /c:",,," myFile.txt.old > myFile.txt

将文件重命名为.old。在旧文件中查找所有不以",,,"开头的行,并将其保存到原始文件中。
编辑-根据评论进行修改
如果要删除的行是只包含逗号(我将包括空格)而没有其他值的行,则应该可以使用此方法。
for %%t in (c:\path\*.txt) do (
    ren "%%~ft" "%%~nxt.old"
    findstr /v /r /c:"^[, ]*$" "%%~ft.old" > "%%~ft"
)

针对路径下的每个文件,将文件重命名为*.old,从这个.old文件中提取不包含(/v)由模式(/c)定义的正则表达式(/r):"从行首开始(^),跟随任何顺序的空格和逗号([, ]*)直到到达行尾($)"。提取的行发送到原始文件名。


1
如果有三个以上,这将匹配。命令中的/b表示匹配需要在行首,如果您知道一行开头的单个逗号足以丢弃该行,请将 ",,," 更改为 ","。其他选项需要调整匹配表达式。 - MC ND
我已经编辑了我的问题,可能会出现一行以“,”开头的情况,所以在这种情况下它也会删除那一行...请您查看并向我建议一些新的方法。 - Samraan
我已经尝试了你的方法,但对我不起作用。我的做法是:for %%t in (c:\path*.txt) do (findstr /v /r /c:"^[, ]*$" > "%%~ft" )。请问您能否验证一下我的方法是否正确? - Samraan
对我来说不起作用...当我尝试修改后运行批处理文件时,没有输出,DOS提示符立即关闭,尽管我在批处理文件末尾加了暂停。 - Samraan
抱歉,是打错了。我在回答中直接打了进去,并忘记了需要批处理文件所需的双百分号符号。已更新。 - MC ND
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接