Просто удалите лишнее пространство из вашего источника;)
@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"