gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:53:04 25 4
gpt4 key购买 nike

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

FOR /F %%a in (alist.txt)  %%b in (blist.txt) do runconsolebatch.bat %%a %%b

但这行不通。当我运行它时,我得到“%b 此时是意外的。”

如果我以某种方式嵌套它们,那是行不通的。我可以将两个文件列表合并为一个文件...像这样吗?

  file1A    file2A

file1B file2B

但我不确定如何将 file1A 分配给 %a 并将 file1B 分配给 %b,或者是否可能。

4/12/2015:我以为这已经解决了。我什至使用了我认为 是正确的批处理文件,但它不起作用。我现在得到的是第一行输出是正确的,其余的是这样的:

第一行工作正常。但是即使 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.

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

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

如果我将 runco​​nsolebatch.bat 更改为 echo,那么我得到

echo !valueA!  %%b

我得到三行输出:第一行来自 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
)
)

blist.txt 是

1111
2222
3333
4444

而 alist.txt 是

AAAA
BBBB
CCCC

但是批处理文件的输出是:

1111 AAAA
2222 BBBB
3333 CCCC

应该是什么时候

1111 AAAA
1111 BBBB

等等

毫无疑问,这是一个愚蠢的错字,但是……什么?此外,这只是在普通用户命令 shell 中运行。

最佳答案

阅读Blist.txtfor循环和 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
)
)

对于问题中指示的值,这应该有效。有问题的字符或超过 1021 个字符的行应该需要附加代码。

关于windows - 如何在批处理中迭代两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27931303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com