批处理脚本:读取行并在每隔一行读取后执行命令

时间:2016-01-06 14:31:09

标签: batch-file dos

假设我有一个像这样的文本文件

node1.log    
node2.log
node3.log 
node4.log etc...

我想逐行阅读并执行

alan.exe node1.log node2.log
alan.exe node3.log node4.log

等。

实现这一目标的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

@echo off
setlocal EnableDelayedExpansion

for /F "delims=" %%a in (file.txt) do (
   if not defined line (
      set "line=%%a"
   ) else (
      ECHO alan.exe !line! %%a
      set "line="
   )
)

答案 1 :(得分:0)

试一试。 File.txt将包含您的日志文件名。

@echo off
setlocal enabledelayedexpansion

FOR /F "delims=" %%G IN ('find /c /v "" ^<file.txt') DO SET NUM=%%G

SET /A NUM=NUM / 2

< file.txt (
    FOR /L %%G IN (1,1,%NUM%) DO (
        SET /P LINE1=
        SET /P LINE2=
        echo mypgm.exe !LINE1! !LINE2!
    )
)
pause

输出

mypgm.exe node1.log node2.log
mypgm.exe node3.log node4.log
mypgm.exe node5.log node6.log
Press any key to continue . . .

删除 echo 一词,并将mypgm.exe替换为您要运行的程序。回声只是在那里进行概念验证。

答案 2 :(得分:0)

像这样:

@echo off

setlocal enabledelayedexpansion
set args=
set n=2
for /f "tokens=*" %%x in (file.txt) do (
    set args=!args! %%x
    set /a n -= 1
    if !n! EQU 0 (
        alan !args!
        set args=
        set n=2
    )
)