Как удалить лишнюю запятую из строки в текстовом файле в пакетном файле?


Я пытаюсь удалить лишнюю запятую из конца строки в текстовом файле. Ниже приведен мой подход:

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
2 2

2 ответа:

Я думаю, что подстрока поможет вам сделать это:

@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 from - https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

Поместите repl.bat в ту же папку, что и пакетный файл, или в папку, которая находится на пути.

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