从文本文件中获取输入并在CLI vbs / batch中使用

时间:2013-06-03 20:39:14

标签: batch-file vbscript

我正在尝试在我们的环境中更改几个HBA上的QueueDepth设置。我对脚本很恐怖,但我试图绊倒它,这样我们就不需要手动实现这个改变了。

简短的版本是这样的,我得到了一些其他脚本(目前正在工作),它收集了大量关于HBA的端口信息并将其放入文本文件中。另一个脚本搜索文件以剖析WWN / WWID信息并将其放入另一个文本文件中。

需要将文本文件中的WWN插入CLI命令。进一步说明:

我需要从中提取信息的示例文本文件:

10:44:24:44:a1:b1:c1:d1
10:41:42:44:a1:b2:c1:d2
10:24:14:22:a1:b1:c1:d1

需要信息(**<WWN>**)

的命令
hbacmd SetDriverParam **<WWN>** G P QueueDepth 32

2 个答案:

答案 0 :(得分:0)

如果WWN行不包含其他文本,您可以像这样提取它们:

Set fso = CreateObject("Scripting.FileSystemObject")
Set sh  = CreateObject("WScript.Shell")

Set re = New RegExp
re.Pattern = "^[0-9a-e]{2}(:[0-9a-e]{2}){7}$"
re.IgnoreCase = True

Set f = fso.OpenTextFile("C:\your\input.txt")
Do Until f.AtEndOfStream
  line = f.ReadLine
  If re.Test(line) Then
    sh.Run "hbacmd SetDriverParam " & line & " G P QueueDepth 32", 0, True
  End If
Loop
f.Close

答案 1 :(得分:0)

也许这对你来说已经足够了?

@echo off
for /F "delims=" %%a in (inputFile.txt) do (
    ECHO hbacmd SetDriverParam %%a G P QueueDepth 32
)

如果没有,请发布其他详细信息,以便我解决问题。

以上程序只需显示最终的hbacmd命令。如果它们是正确的,请删除ECHO部分,以便真正执行命令。