ripper234
ripper234

Reputation: 230008

Batch command to take only first line from input

I'm looking for a DOS batch program that takes a file:

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

And outputs "First input line"

Upvotes: 5

Views: 32610

Answers (3)

George Birbilis
George Birbilis

Reputation: 7

why not use the more +1 command via a pipe?

e.g.

type something | more +1

Upvotes: -2

paxdiablo
paxdiablo

Reputation: 881193

Assuming you mean the Windows cmd interpreter (I'd be surprised if you really were still using DOS), the following script will do what you want:

@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

With an input file of infile.txt as:

line 1
line 2
line 3

this will output:

line 1

This will still process all the lines, it just won't print those beyond line 1. If you want to actually stop processing, use something like:

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

Or you could just go get your hands on Cygwin or GnuWin32 and use the head program. That's what I'd do. But, if that's not an option (some workplaces don't allow it), you can create a similar cmd file in Windows itself as follows (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

Upvotes: 12

ghostdog74
ghostdog74

Reputation: 342313

you can just get the first line like this

set /p firstline=<file
echo %firstline%

Upvotes: 15

Related Questions