1

Мне интересно, могу ли я сказать компьютеру выполнить команду для текстового файла с командным файлом, однако я хотел бы указать, какую строку изменить.

У меня пока нет кода для этого, и я был бы признателен, если бы вы могли дать подробное объяснение.

Когда и если я получу эту команду, я планирую использовать ее, чтобы удалить или записать именно эту строку, а не перезаписать другую.

2 ответа2

1

Делать это через командную строку Windows веселее, чем практично, но это возможно. Вы можете использовать for /f для просмотра файла по одной строке за раз, но я не знаю ни одного тривиального способа отслеживать текущую строку. В следующем коде используется вызов подпрограммы для подсчета строк вручную. Пакетный файл должен вызываться с использованием имени файла, номера строки для замены и замещающей строки.

@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

Пример вывода replace.bat somelines.txt 3 "Hello, world!":

first line
second line
"Hello, world!"
fourth line
0

Sed for Windows позволит вам выполнять строковые операции над текстовыми файлами:

Sed (редактор потоков) на самом деле не настоящий текстовый редактор или текстовый процессор. Вместо этого он используется для фильтрации текста, т. Е. Он принимает текстовый ввод и выполняет с ним некоторую операцию (или набор операций) и выводит измененный текст. Sed обычно используется для извлечения части файла с использованием сопоставления с образцом или замены нескольких вхождений строки в файле.

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