循环遍历每一行并在之后删除它

时间:2011-04-30 22:32:52

标签: loops batch-file line dos

我有一个MS-DOS批处理脚本,它为特定文本文件中的每一行执行自定义命令。我希望它在处理完之后删除每一行,以便下次打开批处理时我可以从我停止的地方恢复它,而不是从头开始并通过相同的行执行循环。这些行只有数字。

file.txt的:

    76561197967664150
    76561197960466635
    76561197969570587
    76561197978933289
    76561198011880885
    76561197977884769
    76561198010665215
    76561198012847269
    76561197988209745
    76561197991756815
    76561197999860750
    76561198012060656
    76561198020700372
    76561198005281666

另外,如果更容易,代码也可以在处理后一次删除250行。

2 个答案:

答案 0 :(得分:1)

为什么不将您处理的最后一个数字写出来而不是从主文件中删除?这会让事情变得简单得多。下次处理文件时,您会跳过数字,直到找到写入磁盘的数字。

答案 1 :(得分:0)

如果您不想用每个处理过的行重写文件:

:loop
REM read first line:
set /p first=<file.txt
REM write changed file.txt:
  find /v "%first%" file.txt>file.tmp
  del file.txt
  ren file.tmp file.txt
echo processing %first%...
echo press any key for next line or CTRL-C to break
pause >nul
goto :loop

注意:如果你真的意味着MS-DOS(我怀疑),这将无效。