如何在执行期间在批处理脚本中传递变量

时间:2018-01-08 14:50:59

标签: batch-file vbscript

我有一个文本文件,其中包含服务器中所有服务的记录。我想保持'#'对于该行开头的少数条目。我创建了一个包含以下代码的vbscript文件:

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

为了执行代码,我使用批处理文件,使用的代码如下:

cscript D:\Users\krkarthi\Desktop\replace.vbs "D:\Users\krkarthi\Desktop\test.txt" "Windows Update" "#Windows Update"

在上面提到的批处理代码中,我需要手动输入我需要保留#条评论的每个条目,并且对于大量服务来说,很难继续。我想另一种方法是让一个单独的文本文件让我们说test1.txt包含所有不需要的条目。变量将在for循环中定义以在test1.txt上运行,并将在cscript之后运行上述do代码。富有想象力的代码如下:

FOR /f %%G in (D:\Users\krkarthi\Desktop\test1.txt)
DO
cscript D:\Users\krkarthi\Desktop\replace.vbs "D:\Users\krkarthi\Desktop\test.txt" "%%G" "#%%G"

不幸的是,上面的代码根本不起作用。我不明白错误存在的位置。

1 个答案:

答案 0 :(得分:0)

尝试从代码中的参数中删除一个%。它应该工作。在将值传递给代码时,您也不需要双引号。

修正:

FOR /F %%G IN (D:\Users\krkarthi\Desktop\test1.txt) DO cscript D:\Users\krkarthi\Desktop\replace.vbs "D:\Users\krkarthi\Desktop\test.txt" "%%G" "#%%G"