作为赋值的一部分,我需要在批处理脚本中并行运行两个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并行获取输入
如果您需要进一步澄清,请告诉我们
答案 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