Как удалить лишнюю запятую из строки в текстовом файле в пакетном файле?
Я пытаюсь удалить лишнюю запятую из конца строки в текстовом файле. Ниже приведен мой подход:
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 ответа:
Я думаю, что подстрока поможет вам сделать это:
@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