我必须运行一个有两个参数的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")
这很好用。但根据我的项目要求,我无法对这些文件位置进行硬编码。我可以从命令传递参数。
答案 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一直试图找到一个名为sourceloc
和destloc
的文件,而不是传递的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