Windows批处理命令从文本文件中读取第一行

如何使用Windowsbatch file从文本文件中读取第一行? 由于文件很大,我只想处理第一行。

这是一个通用的batch file,用于打印GNU文件head实用程序等文件的前n行,而不是一行。

 @echo off if [%1] == [] goto usage if [%2] == [] goto usage call :print_head %1 %2 goto :eof REM REM print_head REM Prints the first non-blank %1 lines in the file %2. REM :print_head setlocal EnableDelayedExpansion set /a counter=0 for /f ^"usebackq^ eol^=^ ^ delims^=^" %%a in (%2) do ( if "!counter!"=="%1" goto :eof echo %%a set /a counter+=1 ) goto :eof :usage echo Usage: head.bat COUNT FILENAME 

例如:

 Z:\>head 1 "test file.c" ; this is line 1 Z:\>head 3 "test file.c" ; this is line 1 this is line 2 line 3 right here 

它目前不计算空行。 它也受到8 KB的batch file行长度限制。

呃? 这是非常简单的

  set /p texte=< file.txt echo %texte% 

呃你们…

 C:\>findstr /n . c:\boot.ini | findstr ^1: 1:[boot loader] C:\>findstr /n . c:\boot.ini | findstr ^3: 3:default=multi(0)disk(0)rdisk(0)partition(1)\WINNT C:\> 

你可以试试这个:

 @echo off for /f %%a in (sample.txt) do ( echo %%a exit /b ) 

编辑或者说,如果你有四列数据,并希望从第五行到最下面,试试这个:

 @echo off for /f "skip=4 tokens=1-4" %%a in (junkl.txt) do ( echo %%a %%b %%c %%d ) 

感谢talkingwalnut回答Windows批处理命令(s)从文本文件中读取第一行我想出了以下解决scheme:

 @echo off for /f "delims=" %%a in ('type sample.txt') do ( echo %%a exit /b ) 

稍微build立在其他人的答案。 现在,允许您指定要读取的文件以及要将结果放入的variables:

 @echo off for /f "delims=" %%x in (%2) do ( set %1=%%x exit /b ) 

这意味着你可以像这样使用上面的(假设你称之为getline.bat)

 c:\> dir > test-file c:\> getline variable test-file c:\> set variable variable= Volume in drive C has no label. 

一个class轮,用于标准输出redirect与“>”:

 @for /f %%i in ('type yourfile.txt') do @echo %%i & exit 

EXIT / B解决scheme的问题,在batch file中更加现实一些,只是其中的一部分。 在EXIT / B之后,所述batch file中没有后续的处理。 通常情况下,批量要多得多,工作量有限。

为了解决这个问题

 @echo off & setlocal enableextensions enabledelayedexpansion set myfile_=C:\_D\TEST\My test file.txt set FirstLine= for /f "delims=" %%i in ('type "%myfile_%"') do ( if not defined FirstLine set FirstLine=%%i) echo FirstLine=%FirstLine% endlocal & goto :EOF 

(但是,所谓的毒药性质仍然是一个问题。)

更多关于使用批处理命令获取特定行的主题:
“23}我如何获得文本文件的第一行和最后一行?”
http://www.netikka.net/tsneti/info/tscmd023.htm

[增加2012年8月28日]也可以有

 @echo off & setlocal enableextensions set myfile_=C:\_D\TEST\My test file.txt for /f "tokens=* delims=" %%a in ( 'type "%myfile_%"') do ( set FirstLine=%%a& goto _ExitForLoop) :_ExitForLoop echo FirstLine=%FirstLine% endlocal & goto :EOF 

尝试这个

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

请注意,batch file方法将被限制为DOS命令处理器的行限制 – 请参阅什么是命令行长度限制? 。

所以如果试图处理一个多于8192个字符的文件,那么脚本将会忽略它们,因为这个值不能保存。