将arraylist从VBscript传递给BAT文件

时间:2015-03-18 18:05:40

标签: windows batch-file vbscript

我有一个包含一些名字的txt文件。我需要那些名字 通过VBscript读取,将它们存储在数组列表中并将其传递给BAT文件。 如何将数组列表传递给BAT文件?

这是vbscript:

Dim objFile, strLine(), WshShell, intsize
intSize = 0 
Redim Preserve strLine(intsize)
Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile= objFSO.OpenTextFile("read.txt", 1)
Do While Not objFile.AtEndOfStream
  strLine(intsize) = objFile.readline
  ReDim Preserve strLine(intSize + 1)
Loop
set WshShell=Wscript.Createobject("Wscript.shell")
    Wshshell.run "test.bat " & strLine(intSize)
objFile.Close

bat文件

@echo off
echo %1

1 个答案:

答案 0 :(得分:0)

Join函数返回通过连接数组中包含的多个子字符串而创建的字符串。

语法Join( list[, delimiter])

参数

  • list:必填。包含要连接的子串的一维数组。
  • delimiter:可选。用于分隔返回字符串中的子字符串的字符串字符。如果省略,则使用空格字符(" ")。如果分隔符是零长度字符串,则列表中的所有项目都不连接分隔符。

使用"括号将列表括起来会导致它在被调用的批处理中显示为唯一的参数(%1)。您的run方法行可以如下:

Wshshell.run "test.bat """ & Join( strLine, ";") & """"

并注意到:循环中缺少数组索引递增;这是几乎无懈可击的代码段:

intSize = -1
ReDim strLine( 0)
strLine( 0) = ""
Do While Not objFile.AtEndOfStream
  intSize = intSize + 1
  ReDim Preserve strLine( intSize)
  strLine( intsize) = objFile.readline
Loop