Como especifico uma linha de texto em um arquivo de texto para um arquivo de lote?

1

Eu estou querendo saber se eu posso dizer ao computador para fazer um comando em um arquivo de texto com um arquivo em lotes, no entanto, gostaria de especificar qual linha para modificar.

Eu ainda não tenho nenhum código para isso e eu ficaria muito grato se você pudesse dar uma explicação detalhada.

Quando e se eu receber este comando, estou planejando usá-lo para excluir ou escrever nessa linha exata e não sobrescrever outra.

    
por Zacyboy11 23.07.2012 / 04:00

2 respostas

1

Isso é mais divertido do que prático, mas é possível. Você pode usar for /f para passar por um arquivo uma linha por vez, mas não conheço nenhuma maneira trivial de acompanhar a linha atual. O código a seguir usa uma chamada para uma sub-rotina para contar as linhas manualmente. O arquivo em lote deve ser chamado usando o nome do arquivo, o número da linha para substituir e a string substituta.

@echo off
set filename=%1
set targetline=%2
set message=%3
set n=0
for /F "tokens=*" %%i in (%filename%) do call :write %%i
exit /b 0

:write
set /a n+=1
if %n%==%targetline% (echo %message%) else echo %*
exit /b 0

Exemplo de saída de replace.bat somelines.txt 3 "Hello, world!" :

first line
second line
"Hello, world!"
fourth line
    
por 23.07.2012 / 19:26
0

O Sed for Windows permite que você execute operações orientadas a linhas em arquivos de texto:

Sed (streams editor) isn't really a true text editor or text processor. Instead, it is used to filter text, i.e., it takes text input and performs some operation (or set of operations) on it and outputs the modified text. Sed is typically used for extracting part of a file using pattern matching or substituting multiple occurances of a string within a file.

    
por 23.07.2012 / 04:04