Пакетная команда для получения только первой строки от ввода - PullRequest
3 голосов
/ 04 октября 2009

Я ищу пакетную программу DOS, которая принимает файл:

First input line
Second input line
Third input line...

А выводит «Первая строка ввода»

Ответы [ 3 ]

13 голосов
/ 04 октября 2009

вы можете просто получить первую строку, как это

set /p firstline=<file
echo %firstline%
10 голосов
/ 04 октября 2009

Предполагая, что вы имеете в виду интерпретатор Windows cmd (я был бы удивлен, если бы вы действительно все еще использовали DOS), следующий скрипт будет делать то, что вы хотите:

@echo off
setlocal enableextensions enabledelayedexpansion
set first=1
for /f "delims=" %%i in (infile.txt) do (
    if !first!==1 echo %%i
    set first=0
)
endlocal

С входным файлом infile.txt как:

line 1
line 2
line 3

это выдаст:

line 1

Это все равно будет обрабатывать все строки, оно просто не будет печатать те, которые находятся за строкой 1. Если вы действительно хотите остановить обработку, используйте что-то вроде:

@echo off
setlocal enableextensions enabledelayedexpansion
for /f "delims=" %%i in (infile.txt) do (
    echo %%i
    goto :endfor
)
:endfor
endlocal

Или вы можете просто взять в свои руки Cygwin или GnuWin32 и использовать программу head. Это то, что я бы сделал. Но, если это не вариант (некоторые рабочие места не позволяют этого), вы можете создать аналогичный cmd-файл в самой Windows следующим образом (winhead.cmd):

@echo off
setlocal enableextensions enabledelayedexpansion

if x%1x==xx goto :usage
if x%2x==xx goto :usage

set /a "linenum = 0"
for /f "usebackq delims=" %%i in (%1) do (
    if !linenum! geq %2 goto :break1
    echo %%i
    set /a "linenum = linenum + 1"
)
:break1
endlocal
goto :finish

:usage
echo.winhead ^<file^> ^<numlines^>
echo.   ^<file^>
echo.      is the file to process
echo.      (surround with double quotes if it contains spaces).
echo.   ^<numlines^>
echo.      is the number of lines to print from file start.
goto :finish

:finish
endlocal
0 голосов
/ 28 февраля 2013

почему бы не использовать команду more +1 через канал?

, например

введите что-нибудь | больше + 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...