Basta remover o espaço extra da sua fonte;)
@echo off
setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (C:\test\Index.txt) do (
set line=%%A
echo(!line:~1!>>C:\test\Index1.txt
)
Eu também usei echo(
para proteger contra linhas que ficam vazias quando você tira o primeiro caractere. ECHO
sem nada a seguir resulta em ECHO is off.
mensagem na sua saída.
Seu script simplista funciona bem em muitos casos. Mas ele terá problemas se sua entrada contiver !
character, ou se você precisar preservar linhas em branco. Existem soluções para esses problemas, mas o código se torna mais complicado e mais lento.
Eu uso um utilitário JScript / batch híbrido chamado REPL.BAT sempre que desejo modificar o conteúdo de um arquivo. Ele realiza uma pesquisa em regex e substitui stdin e grava o resultado em stdout.
Assumindo que o REPL.BAT está no seu diretório atual, ou melhor ainda, em algum lugar dentro do seu PATH, então o seu script pode ser substituído pelo seguinte, que é ao mesmo tempo mais rápido e confiável:
type "C:\test\Index.txt"|repl "^." "" >"C:\test\Index1.txt"