Batch file 如何在批处理文件中从文本文件的行中删除额外的逗号?

Batch file 如何在批处理文件中从文本文件的行中删除额外的逗号?,batch-file,batch-processing,Batch File,Batch Processing,我正试图从文本文件的行尾删除额外的逗号。以下是我的做法: set "n=%~," for %%t in (*.txt) do ( findstr /v /r /c:"$[%n%]*$" > res.txt ) 但它不能替换文本文件中多余的逗号。文本文件的内容如下: abc,asd,123, 1234,prq,456,,,,, jkl,abc,9876,,, 5679,3459,gjh,, abc,asd,123 123,prq,456 jkl,abc,9878 5679,3459,gj

我正试图从文本文件的行尾删除额外的逗号。以下是我的做法:

set "n=%~,"
for %%t in (*.txt) do (
findstr /v /r /c:"$[%n%]*$" > res.txt
)
但它不能替换文本文件中多余的逗号。文本文件的内容如下:

abc,asd,123,
1234,prq,456,,,,,
jkl,abc,9876,,,
5679,3459,gjh,,
abc,asd,123
123,prq,456
jkl,abc,9878
5679,3459,gjh
我希望预期的输出如下所示:

abc,asd,123,
1234,prq,456,,,,,
jkl,abc,9876,,,
5679,3459,gjh,,
abc,asd,123
123,prq,456
jkl,abc,9878
5679,3459,gjh

我认为子字符串将帮助您完成:

@echo off
setlocal EnableDelayedExpansion

for %%a in (*.txt) do (
    set txtPath=%%~fa
    echo !txtPath!
    for /f %%b in ('type "!txtPath!"') do (
        set line=%%b
        set output=!line!
        if "!line:~-1!"=="," (
            for /l %%i in (1,1,1000) do if "!output:~-1!"=="," set output=!output:~0,-1!
        )
        echo !output!>> res.txt
    )
)

如上面的代码所示,它将有助于修剪多达1000个不需要的尾随逗号,并将格式化输出放在文本文件中。有关批处理中的字符串操作的详细信息,请参阅本文档。希望对您有所帮助。

这使用了一个名为
repl.bat的帮助程序批处理文件
来自-

repl.bat
放在与批处理文件相同的文件夹中,或放在路径上的文件夹中

@echo off
for %%t in (*.txt) do (
   type "%%t" |repl ",*$" "" >> res.tmp
)
ren res.tmp res.txt

感谢您的回复,我希望输出为文本文件。我已经更新了我的问题和预期输出。我想澄清我自己,因为我没有提到文件名,但你提到了文件名。你能提供我的方法吗谢谢你的回答,但我不想更改我的旧文件名。我想用你的方法将输出到同一个文件。有时,res.txt中的内容正好是原来的两倍。。。请帮助我,在再次运行之前是否删除了
res.txt
?repl是一个搜索和替换工具,它获取文件,删除行尾前的每个逗号。在正则表达式中,
*
表示与
*
前面的字符匹配的每个字符,
$
表示行尾。该匹配项将替换为空字符串
如果需要更多信息,请询问具体问题。为什么在该语句中使用| rep1它是REPL,名称中没有1。这是helper批处理文件-您尝试过吗?它通过repl.bat文件传递每个文件。