for /f "delims=" %%a in ('more ^< numbers.txt') do (
文章標籤
set
delims
echo
bat
txt
nul
command
pause>nul
if "!i!"=="%lines%" set ok=1
>>This page shows how to read specific lines from a text file. There are many ways to have the for /f command read the input file翻譯社 for instance: 這篇文章演示若何從檔中讀取特定的行.用for /f饬令的多種轉變方式可以到達該目標,例如: ---------------------------------for /f----------------------------------------- for /f "delims=" %%a in (input.txt) do ... for /f "delims=" %%a in ('type input.txt') do ... for /f "delims=" %%a in ('more ^< input.txt') do ... ---------------------------------for /f-----------------------------------------
>>However, only the last method (using the more command) will give consistent results across Windows NT, 2000, XP and 2003. The first method does not recognise unicode files. Also, the usebackq switch must be used if the input filename contains spaces. The second method, using the type command翻譯社 also fails to recognise unicode files on Windows 2000, XP and 2003 if the input file does not begin with a bit order mark (BOM). 但是翻譯社只有最後一種方式(用到more敕令的)在windows nt,2000翻譯社xp和2003中可以或許獲得一致的效果翻譯第一種方式翻譯社不克不及有用的辨認unicode編碼檔,同時,若是檔案名含有空格時,usebackq開關必需打開。第二種方式,用到type命令,一樣在windows nt翻譯社2000,xp和2003中翻譯社不克不及有效識別unicode編碼檔,同時,要求輸入的檔內容不克不及以位元序標誌(BOM)開首.
>>In all the examples翻譯社 assume the contents of of the file numbers.txt to be: 在以下所有的例子中,假定numbers.txt檔輸入以下內容: ----------------------numbers.txt-------------------------- one two three four five six seven eight nine ten ----------------------numbers.txt--------------------------
>>Displaying the first line翻譯社This example prints one. 顯示第一行,列印第一行的例子以下: ------------------------1.bat------------------------------------------ @echo off &
setlocal ENABLEEXTENSIONS set "first=" for /f "delims=" %%a in ('more ^< numbers.txt') do ( if not defined first set first=%%a ) echo/%first% pause>nul ------------------------1.bat-------------------------------------------
>>Displaying the first X lines翻譯社This example prints one, two and three. 顯示前幾行翻譯社列印第一,二翻譯社三行的例子以下: ------------------------123.bat------------------------------- @echo off & setlocal ENABLEEXTENSIONS set "lines=3" set i=-1 set "ok=" for /f "delims=" %%a in ('more ^< numbers.txt') do ( set/a i+=1 & for /f %%z in ('echo/%%i%%') do ( if "%%z"=="%lines%" set ok=1 ) if not defined ok echo/%%a ) pause>nul ------------------------123.bat-------------------------------
for /f "skip=%start% delims=" %%a in ('more ^< numbers.txt') do (
>>Displaying the last line,This example prints ten. 顯示最後一行翻譯社列印第十行的例子以下: ------------------------10.bat-------------------------------------------- @echo off & setlocal ENABLEEXTENSIONS for /f "delims=" %%a in ('more ^< numbers.txt') do set "last=%%a" echo/%last% pause>nul ------------------------10.bat--------------------------------------------
>>Displaying the last X lines,This example prints nine and ten. 顯示最後x行,列印第9,10行的例子如下: ------------------------lastx.bat----------------------------------------------- @echo off & setlocal ENABLEEXTENSIONS set "lines=2" for /f %%a in ('find/c /v "" ^< numbers.txt') do set/a skip=%%a-lines for /f "delims=" %%a in ('more/e +%skip% ^< numbers.txt') do ( :: 或者 for /f "skip=%skip% delims=" %%a in ('more ^< numbers.txt') do ( echo/%%a ) pause>nul ------------------------lastx.bat------------------------------------------------
>>Displaying the Nth line,This example prints three. Note that instead of using the more command's /e switch, the skip option could have been used with the for /f command, however, this fails is it is set to any number less than one. 顯示第n行翻譯社列印第三行. 注意啟用more敕令的擴大功能(/e)開關,同時,ship選項曩昔常用於for /f命名中,可是當設定的數量小於現實值時,將致使失敗 ------------------------Nth.bat----------------------------------------------- @echo off & setlocal ENABLEEXTENSIONS set LineNo=3 set "line=" set/a LineNo-=1 for /f "delims=" %%a in ('more/e +%LineNo% ^< numbers.txt') do ( if not defined line set "line=%%a" ) echo/%line% pause>nul ------------------------Nth.bat------------------------------------------------
>>Displaying the Nth line plus X number of lines,This example prints five and six. 顯示第n+x行,列印第5翻譯社6行的例子以下: ------------------------x+Nth.bat-------------------------------------------------- @echo off & setlocal ENABLEEXTENSIONS set start=5 set "lines=2" set/a i=-1,start-=1 set "ok=" for /f "delims=" %%a in ('more/e +%start% ^< numbers.txt') do ( set/a i+=1 & for /f %%z in ('echo/%%i%%') do ( if "%%z"=="%lines%" set ok=1 ) if not defined ok echo/%%a ) pause>nul ------------------------x+Nth.bat----------------------------------------------------
留言列表