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

Batch file 如何通过批处理文件从文本文件中删除不需要的行?,batch-file,dos,Batch File,Dos,我有一个包含以下内容的文本文件,其中包含一些我想从文本文件中删除的不需要的行 1233,pqry,01/11/2011 2365698,abcd,2011/01/12 ,defghj,11/12/2013 ,,, ,,, ,,, 在上面的示例中,我们可以看到有多行以逗号分隔。我想通过批处理文件从文本文件中删除这些行。请帮帮我 ren myFile.txt myFile.txt.old findstr /v /b /c:",,," myFile.txt.old > myFile.txt

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

1233,pqry,01/11/2011
2365698,abcd,2011/01/12
,defghj,11/12/2013
,,,
,,,
,,,
在上面的示例中,我们可以看到有多行以逗号分隔。我想通过批处理文件从文本文件中删除这些行。请帮帮我

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
)正则表达式(
/r
)的行,该正则表达式由模式(
/c
)定义:“从行的开头(
^
),后跟任何空格和逗号序列(
[,]*
)直到到达行尾(
$
)”。提取的行将发送到原始文件名。

是否要删除
,,,
行?您的行没有
逗号分隔的
。行之间用“
CR/LF
@npocmaka”分隔:是的,我想去掉那些只有逗号但没有其他值的行感谢您的友好回复,但我的问题是,可能会有一种情况,它们的逗号数会大于或小于3。。。因此,在这种情况下,我想它不会出现,如果有三个以上,这将匹配。命令中的
/b
表示匹配需要在行首,如果您知道行首的一个逗号足以丢弃该行,请将
“,,”
更改为仅
“,”
。其他选项需要调整匹配表达式。我已经编辑了我的问题,可能会有一行从开始的情况,因此在这种情况下,它也会删除该行…请仔细研究,并建议一些新的方法来解决问题,以供您的回答和对上述问题的进一步阐述,如果我不想提及特定目录的文件名,这将作用于该目录中的所有文件。。。请帮助解决这个问题…使用for命令<(c:\somewhere\*.txt)中%%t的代码>执行(…..
并将文件的全名(包括路径)称为
“%%~ft”