使用参数运行VB脚本文件

时间:2016-02-25 14:19:15

标签: command-line vbscript command-line-arguments

我必须运行一个有两个参数的VB脚本。所以我在下面运行命令。

Delete_Dummy1.vb
s C:\Users\c6342\Desktop\XML_to_CSV\Temp_Files\xml.csv C:\Users\c6342\Deskto
p\XML_to_CSV\Temp_Files\xml1.txt
**VB Script Sample - not working:** 
**sourceloc** = WScript.Arguments.Item(0)
**destloc** = WScript.Arguments.Item(1)
Dim objFSO, dataArray, clippedArray()
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set oTextStream = objFSO.OpenTextFile("**sourceloc**")
Set newFile = objFSO.CreateTextFile("**destloc**")

它会在找不到文件时抛出错误。但是如果我对sourceloc和destloc进行硬编码并删除参数,那么它工作正常。只有当我使用参数时才会抛出错误。

**Working VB Script sample:**
Set oTextStream = objFSO.OpenTextFile("C:\Users\c6342\Desktop\XML_to_CSV\Temp_Files\xml.csv")
Set newFile = objFSO.CreateTextFile("C:\Users\c6342\Desktop\XML_to_CSV\Temp_Files\xml1.txt")

这很好用。但根据我的项目要求,我无法对这些文件位置进行硬编码。我可以从命令传递参数。

1 个答案:

答案 0 :(得分:2)

length discussion in the comments之后认为最好只更新我的答案。

参数无效的原因是您从未将它们传递给OpenTextFile()CreateTextFile()方法。相反,您传递的是包含变量名而不是实际变量的文字字符串。

sourceloc = WScript.Arguments.Item(0)
destloc = WScript.Arguments.Item(1)

Dim objFSO, dataArray, clippedArray()
Set objFSO = CreateObject("Scripting.FileSystemObject")

'Pass the variables not a string literal
Set oTextStream = objFSO.OpenTextFile(sourceloc)
Set newFile = objFSO.CreateTextFile(destloc)

目前,VBScript一直试图找到一个名为sourcelocdestloc的文件,而不是传递的Arguments集合中的实际文件名。

可能导致的原因
  

Microsoft VBScript运行时错误:找不到文件

注意: 以下内容基于initial question,后来经过修订。

这取决于您如何将参数传递给脚本,值中的任何空格都将被视为新参数。目前这是参数传递的方式;

0. C:\Users\enter
1. code
2. herec6342\Desktop\XML_to_CSV\Temp_Files\xml.csv
3. C:\Users\c6342\Desktop\XML_to_CSV\Temp_Files\xml1.txt

我确定这不是你所期望的。为避免这种情况,请将每个参数用双引号"..."括起来。

Delete_Dummy1.vbs "C:\Users\enter code herec6342\Desktop\XML_to_CSV\Temp_Files\xml.csv" "C:\Users\c6342\Desktop\XML_to_CSV\Temp_Files\xml1.txt"

通过这种方式,您可以获得更多预期

0. C:\Users\enter code herec6342\Desktop\XML_to_CSV\Temp_Files\xml.csv
1. C:\Users\c6342\Desktop\XML_to_CSV\Temp_Files\xml1.txt