Как запустить два цикла for параллельно в пакетном скрипте - PullRequest
0 голосов
/ 15 мая 2018

Как часть задания, мне нужно запустить два цикла 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 голосов
/ 15 июня 2018

Вот мой скрипт 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
0 голосов
/ 15 мая 2018

Вы можете использовать FOR для input1 и получать строку за строкой из input2 с помощью SET /P:

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 !, not "%% ~ Н ").

Кроме того, вы должны обеспечить одинаковое количество строк в обоих входах.

На вашем месте я бы переключился на vbscript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...