如何在批处理脚本中并行运行两个for循环

时间:2018-05-15 12:20:33

标签: batch-file

作为赋值的一部分,我需要在批处理脚本中并行运行两个for循环。如何在批处理脚本中并行运行两个for循环。简而言之,我使用以下代码将文件1中的内容替换为文件2中存在的内容,但是以并行方式。

代码:

FOR /f ('use backqdelims=' %%G in `type D:\Users\krkarthi\Desktop\input1.txt`) && ('use backqdelims=' %%H in `type D:\Users\krkarthi\Desktop\input2.txt`) DO cscript D:\Users\krkarthi\Desktop\replace.vbs "D:\Users\krkarthi\Desktop\test.txt" "%%~G" "%%~H")

在上面的脚本中,input1.txt和input2.txt包含用G和H变量定义的数据。我需要在test.txt文件中生成输出。

代码应该以这样的方式执行:G和H变量应该从input1.txt和input2.txt并行获取输入

如果您需要进一步澄清,请告诉我们

2 个答案:

答案 0 :(得分:1)

您可以将FOR用于input1,并使用SET /P从input2获取一行:

SETLOCAL ENABLEDELAYEDEXPANSION
(FOR /F %%G in (D:\Users\krkarthi\Desktop\input1.txt) DO (
    SET /P H=
    cscript D:\Users\krkarthi\Desktop\replace.vbs "D:\Users\krkarthi\Desktop\test.txt" "%%~G" !H!
))<D:\Users\krkarthi\Desktop\input2.txt

然而,你将失去对input2的参数处理(注意!H!,而不是&#34; %%〜H&#34;)。

此外,您必须确保两个输入中的行数相同。

如果我是你,我会切换到vbscript。

答案 1 :(得分:0)

这是我的replace.vbs脚本

Const Readpurpose = 1
Const Writepurpose = 2

strServiceMonFile = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)

set objFSO = createObject("Scripting.FileSystemObject")
set objFile = objFSO.OpenTextFile(strServiceMonFile,Readpurpose)
strText = objFile.ReadAll
objFile.close

set objFile = objFSO.OpenTextFile(strServiceMonFile,Writepurpose)
strNewText = Replace(strText, strOldText, strNewText)
objFile.Write strNewText
objFile.close