批处理如何读取文本文件

时间:2013-12-04 09:59:49

标签: windows batch-file file-io

我需要制作一个可以读取文本文件的批处理文件,而我正在使用Windows 7 ultimate 32 bit

我目前正在使用此代码:

@ECHO OFF
for /f "delims=" %%x in (test.txt) do set "Var=%%x"
ECHO %Var%
pause

但这只是读取第一行,我需要它来阅读整个内容。我需要它来显示全文文件。

2 个答案:

答案 0 :(得分:3)

试试这个:

@ECHO OFF
SetLocal EnableDelayedExpansion

for /f "delims=" %%x in ('type test.txt') do ( 
    set "Var=%%x"
    ECHO !Var!
)
pause

如果在for循环内执行多个命令,则需要用括号括起for循环。除此之外,SetLocal EnableDelayedExpansion将有助于expand the variable at execution time rather than at parse time

希望这有帮助。

答案 1 :(得分:2)

实际上,这应该读取整个文件并将Var设置为 last 行。

如果您需要处理整个文件,您有以下几种选择:

  1. 如果您只是需要为每一行做一些事情,那么只需使用一个块而不是set "Var=%%x"

    for /f "delims=" %%x in (test.txt) do (
      rem Do something with %%x
    )
    
  2. 如果您需要在内存中逐行完整的文件,请使用计数器并模拟包含大量变量的数组:

    setlocal enabledelayedexpansion
    set cnt=0
    for /f "delims=" %%x in (test.txt) do (
      set "ine[!cnt!]=%%x"
      set /a cnt+=1
    )
    set /a numlines=cnt-1
    

    然后您可以使用for /l循环再次访问它们。