Как мне удалить конечные пробелы в каждой строке в текстовом файле в следующей команде? Я создал скрипт ниже для удаления 1-го символа в каждой строке, но это создает пробел в конце каждой строки ...

@echo off

setlocal enabledelayedexpansion

for /F "tokens=*" %%A in (C:\test\Index.txt) do (
    set line=%%A
    echo !line:~1! >> C:\test\Index1.txt
)

2 ответа2

1

Просто удалите лишнее пространство из вашего источника;)

@echo off
setlocal enabledelayedexpansion

for /F "tokens=*" %%A in (C:\test\Index.txt) do (
    set line=%%A
    echo(!line:~1!>>C:\test\Index1.txt
)

Я также использовал echo( для защиты от строк, которые становятся пустыми, когда вы удаляете первый символ. ECHO без каких-либо следующих результатов в ECHO is off. сообщение в вашем выводе.

Ваш упрощенный скрипт отлично работает во многих случаях. Но это будет иметь проблемы, если ваш вклад содержит ! символ, или если вам нужно сохранить пустые строки. Есть решения для этих проблем, но код становится более сложным и медленным.

Я использую гибридную утилиту JScript/batch REPL.BAT всякий раз, когда я хочу изменить содержимое файла. Он выполняет поиск и замену регулярных выражений в stdin и записывает результат в stdout.

Предполагая, что REPL.BAT находится в вашем текущем каталоге, или, что еще лучше, где-то в вашем PATH, тогда ваш скрипт может быть заменен следующим одним вкладышем, который будет быстрее и надежнее:

type "C:\test\Index.txt"|repl "^." "" >"C:\test\Index1.txt"
0

Вы можете использовать sed для Windows:

sed "s/\s*$//" infile.txt>outfile.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .