批处理命令仅从输入中获取第一行

时间:2009-10-04 13:31:48

标签: batch-file

我正在寻找一个带有文件的DOS批处理程序:

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

输出“第一输入线”

3 个答案:

答案 0 :(得分:13)

你可以像这样获得第一行

set /p firstline=<file
echo %firstline%

答案 1 :(得分:10)

假设您的意思是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

或者您可以开始CygwinGnuWin32并使用head计划。这就是我要做的。但是,如果这不是一个选项(某些工作场所不允许),您可以在Windows中创建类似的cmd文件,如下所示(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

答案 2 :(得分:-2)

为什么不通过管道使用more +1命令?

e.g。

键入内容|更多+1