Скрипт пакетного файла Windows для извлечения третьей строки из всех текстовых файлов в каталоге - PullRequest
0 голосов
/ 02 апреля 2011

Мне нужен файл сценария Windows для извлечения третьей строки из всех текстовых файлов в каталоге и вывода их в отдельный текстовый файл. Может кто-нибудь помочь мне написать командный файл для извлечения этой информации? Я начинающий в этом вопросе. Спасибо!

Ответы [ 3 ]

3 голосов
/ 02 апреля 2011

Это выполнимо, но только с небольшим взломом.

Сначала вам нужно создать пакетный файл thirdline.cmd:

@echo off
for /f "skip=2 delims=" %%i in (%1) do echo %%i & goto :EOF

Затем из командыline вы бы сделали:

for %i in (*.*) do @thirdline "%i"

Если вы хотите сделать это из другого пакетного файла, вам нужно изменить %i выше на %%i (то есть, как они появляются вthirdline.cmd).

Не забудьте заменить *.* файловой маской, соответствующей файлам, которые вы хотите обработать.

Наконец, thirdline.cmd, как указано выше, просто выводит третью строку вприставка.Если вы хотите записать его в другой файл (скажем, lines.txt), измените thirdline.cmd на:

@echo off
for /f "skip=2 delims=" %%i in (%1) do >>lines.txt echo %%i & goto :EOF
2 голосов
/ 02 апреля 2011

В качестве альтернативы, вот еще один подход:

SETLOCAL
(FOR /L %%i IN (1,1,3) DO SET /P line=) < filename.txt
> another.txt ECHO %line%
ENDLOCAL

Используйте SETLOCAL & ENDLOCAL всякий раз, когда вы не можете быть уверены, что переменные, которые вы собираетесь ввести в свой скрипт, не будут конфликтоватьс уже существующими, либо определенными системой, либо с помощью вызывающего пакетного сценария, если таковой имеется.В основном, используйте их, чтобы быть на безопасной стороне.(Спасибо Джону за предложение!)

0 голосов
/ 02 апреля 2011

Если у вас есть выбор, вот Ruby для Windows один вкладыш

$ ruby -ne "ARGF.lineno=0 if ARGF.eof?; print if ARGF.lineno==3" *.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...