使用批处理文件循环文本文件

时间:2019-04-01 06:24:08

标签: batch-file

我想遍历具有3000行的平面文件(文本文件)。我希望能够打印30行,然后打印便笺,然后再打印接下来的30行和便笺。

我已经尝试了以下方法,但没有用。

For /L %%file in (1,30,3000) do echo %%file

预期结果:

  

名称描述描述

     

Xxxxx xxxxxxxxx Xxxxxxx

     

Xxxxx xxxxxxxxx Xxxxxxx

     

一些注意事项

     

名称描述描述

     

Xxxxx xxxxxxxxx Xxxxxxx

     

Xxxxx xxxxxxxxx Xxxxxxx

1 个答案:

答案 0 :(得分:0)

您的for循环完全无效。元变量只需要一个字符而不是一个单词。类似于%%i,但无论如何,/L循环也只会执行您告诉它的次数,而不会执行您在此处的想法。.尝试以下操作:

注意:请确保将代码第三行中的D:\work dir\somefile.txt更改为文件名(如果在同一目录中),否则请添加完整路径。

@echo off
setlocal enabledelayedexpansion
set "file=somefile.txt"
set /a cnt=0

for /f "delims=" %%i in (%file%) do (
 set /a "eval=(cnt+1)%%30"
 if not !eval! equ 0 echo %%i
 if !eval! equ 0 (
    echo %%i
    Echo Add YOUR note here!!!
)
 set /a cnt+=1
)

如果您随后要求用户手动插入注释,请使用set /p,如下所示:

@echo off
setlocal enabledelayedexpansion
set "file=somefile.txt"
set /a cnt=0

for /f "delims=" %%i in (%file%) do (
 set /a "eval=(cnt+1)%%30"
 if not !eval! equ 0 echo %%i
 if !eval! equ 0 (
    echo %%i
    set /p note=Add note?
    echo !note!
)
 set /a cnt+=1
)