1

Мне нужно вставить текст (в частности, символ FormFeed, значение ASCII 12 или 0xC) каждые 66 строк в текстовом файле в окне Windows. Есть ли встроенный инструмент, который может сделать это?

2 ответа2

2

Это может быть сделано достаточно легко с помощью PowerShell, JScript или VBScript. Но если вы хотите остаться в мире пакетной обработки, вам понадобится какая-то нестандартная утилита или сложная пакетная программа.

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

type "file.txt"|repl "(.*\n){66}" "$&\x0C" mx >"file.txt.new"
move /y "file.txt.new" "file.txt" >nul

Выше предполагается, что у вас есть REPL.BAT в вашем текущем каталоге, или, что еще лучше, где-то на вашем пути.

1

Если вы разрешите использовать Powershell для последних версий Windows, вы можете сделать это следующим образом из Powershell:

(gc input.txt -raw) -replace '(.*\n){66}', "`$0$([char]0x0c)" > output.txt

Если вы работаете с cmd.exe, вы должны запустить это так:

powershell (gc input.txt -raw) -replace '(.*\n){66}', \"`$0$([char]0x0c)\" > output.txt

Обратите внимание, что Powershell будет использовать кодировку Unicode, когда вы используете > перенаправление. Если вам нужна другая кодировка, вы можете направить в out-file -encoding [oem|default|ascii|utf8] (больше информации о кодировках здесь, под заголовком -Encoding).

например:

(gc input.txt -raw) -replace '(.*\n){66}', "`$0$([char]0x0c)" | out-file -encoding utf8

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