Вариант 1 - SET/P: Это самый простой и быстрый чистого пакетного решения, при условии, строка не превышает 1021 байт, и она не заканчивается управляющими символами, которые должны быть сохранены. Размер файла не имеет значения - он всегда будет читать и писать первую строку очень быстро.
@echo off
setlocal enableDelayedExpansion
set "ln="
<"input.txt" set /p "ln="
>"output.txt" (echo(!ln!)
Вариант 2 - FOR/F: Это будет работать с линиями до ~ длиной 8191 байт, но это может быть медленным, если файл действительно большой, поскольку цикл FOR/F должен прочитать весь файл прежде чем он обработает первую строку. Это решение в основном совпадает с ответом Mofi, за исключением того, что отключает параметр EOL, поэтому он никогда не игнорирует первую строку, независимо от того, что является первым символом.У него есть ограничение, что он будет пропускать пустые строки, так что технически это не дает правильный результат, если первая строка пуста:
@echo off
for /f usebackq^ delims^=^ eol^= %%A in ("input.txt") do echo(%%A>"output.txt"&goto :break
:break
Существует способ, чтобы сохранить первую строку, если она пуста, используя чистый но я не стал бы беспокоиться. Я бы перешел к ...
Вариант 3 - JREPL.BAT или какое-либо другое непериодическое решение: Пакет очень плохо работает при манипулировании текстовыми файлами. Вам намного лучше использовать некоторые другие языки сценариев, такие как VBScript, JScript или Powershell. Или порт Windows любого количества утилит unix.
Я бы использовал JREPL.BAT - гибридную утилиту для обработки текстовых сообщений JScrpit/пакетного регулярного выражения, которая запускается изначально на любой машине Windows с XP и далее. Это слишком сложно для такой простой задачи, но это очень удобный, мощный и эффективный инструмент для вашего арсенала. После этого он может использоваться для многих задач обработки текста. Полная документация встроена в скрипт.
jrepl "^.*" "$&" /jendln "quit=true" /f "input.txt" /o "output.txt"
Используйте CALL JREPL
если поместить команду в пакетном сценарии.
Это не сработает, если первая строка начинается с; или, если первая строка пуста (предполагая, что ОП хочет иметь пустую строку в качестве выхода) – dbenham