如何在批处理中迭代两个列表

Ron*_*Ron 2 windows batch-file

我想从批处理文件中运行一个控制台应用程序.实际上,控制台应用程序是从另一个批处理文件运行 该应用程序可以采用两个命令行参数a和b.它们是文件名.我有两个文件列表,alist.txt和blist.txt,长度相同.我想,如果可能的话,像这样运行批处理:

FOR /F %%a in (alist.txt)  %%b in (blist.txt) do runconsolebatch.bat %%a %%b
Run Code Online (Sandbox Code Playgroud)

但这不起作用.当我运行它时,我得到"%b此时出乎意料."

如果我以某种方式嵌套它们,那就行不通了.我可以将两个文件列表加入一个文件......就像这样?

  file1A    file2A

  file1B    file2B
Run Code Online (Sandbox Code Playgroud)

但我不确定如何将file1A分配给%a和file1B分配给%b,或者如果可能的话.

2015年4月12日:我认为这已经解决了.我甚至使用了我认为正确的批处理文件,但它不起作用.我现在得到的是第一个输出线是正确的,其余的是这样的:

第一行正常工作.但即使DIR.TXT文件有5个条目且NAMES.TXT文件有3个条目,我只能再获得两行.这应该是15行输出.其余的输出是这样的:

G:\test>(
set /p "valueA="  
 runconsolebatch.bat !valueA! name1.txt 
)  

Command line: in=!valueA! name1.txt 

failure validating G:\test\source\!VALUEA!: file may not be correctly specified or doesn't exist. 
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的批处理文件:

@echo off
    setlocal enableextensions enabledelayedexpansion
    <"dir2.txt" (
        for /f "usebackq delims=" %%b in ("names.txt") do (
            set /p "valueA="
            runconsolebatch.bat !valueA! %%b
        )
    )
Run Code Online (Sandbox Code Playgroud)

如果我改变runco​​nsolebatch.bat回声,我得到

echo !valueA!  %%b
Run Code Online (Sandbox Code Playgroud)

我得到三行输出:dir2.txt中的第一行和names.txt中的第一行,第二行和第二行以及第三行和第三行.

出于某种原因,虽然这种方法曾经有效,但现在还没有.这是我的批处理文件:

@echo off
setlocal enableextensions enabledelayedexpansion
<"blist.txt" (
    for /f "usebackq delims=" %%b in ("alist.txt") do (
        set /p "valueA="
        echo !valueA! %%b
    )
)
Run Code Online (Sandbox Code Playgroud)

blist.txt是

1111
2222
3333
4444
Run Code Online (Sandbox Code Playgroud)

和alist.txt是

AAAA
BBBB
CCCC
Run Code Online (Sandbox Code Playgroud)

但批处理文件的输出是:

1111 AAAA
2222 BBBB
3333 CCCC
Run Code Online (Sandbox Code Playgroud)

什么时候应该

1111 AAAA
1111 BBBB
Run Code Online (Sandbox Code Playgroud)

等等

毫无疑问,这是一个愚蠢的错字但是......什么?这也只是在常规用户命令shell中运行.

MC *_* ND 5

Blist.txt使用for循环和AList.txt文件输入重定向和set /p命令读取.

@echo off
    setlocal enableextensions enabledelayedexpansion
    <"Alist.txt" (
        for /f "usebackq delims=" %%b in ("Blist.txt") do (
            set /p "valueA="
            echo !valueA! %%b
        )
    )
Run Code Online (Sandbox Code Playgroud)

对于问题中指出的值,这应该有效.有问题的字符或长度超过1021个字符的行应该需要aditional代码.