Command line 使用参数运行VB脚本文件

Command line 使用参数运行VB脚本文件,command-line,vbscript,command-line-arguments,Command Line,Vbscript,Command Line Arguments,我必须运行一个VB脚本,它有两个参数。因此,我正在运行下面的命令 Delete_Dummy1.vb s C:\Users\c6342\Desktop\XML\u to\u CSV\Temp\u Files\XML.CSV C:\Users\c6342\Deskto p\XML\u到\u CSV\Temp\u文件\xml1.txt **VB脚本示例-不工作:** **sourceloc**=WScript.Arguments.Item(0) **destloc**=WScript.Argumen

我必须运行一个VB脚本,它有两个参数。因此,我正在运行下面的命令

Delete_Dummy1.vb
s C:\Users\c6342\Desktop\XML\u to\u CSV\Temp\u Files\XML.CSV C:\Users\c6342\Deskto
p\XML\u到\u CSV\Temp\u文件\xml1.txt
**VB脚本示例-不工作:**
**sourceloc**=WScript.Arguments.Item(0)
**destloc**=WScript.Arguments.Item(1)
Dim objFSO、数据阵列、clippedArray()
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
设置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")
这个很好用。但根据我的项目要求,我不能硬编码这些文件的位置。我可以通过命令作为参数传递。

经过一段时间后,我认为最好只更新我的答案

参数不起作用的原因是您从未将它们传递给
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
的文件,而不是传递参数集合中的实际文件名。这可能是导致

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


注:以下内容是根据修订后的内容编写的


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

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 这样你就能得到更多你想要的

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 0C:\Users\在此输入代码6342\Desktop\XML\u to\u CSV\Temp\u Files\XML.CSV 1.C:\Users\c6342\Desktop\XML\u to\u CSV\Temp\u Files\xml1.txt 经过一段时间后,我认为最好只是更新我的答案

参数不起作用的原因是您从未将它们传递给
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
的文件,而不是传递参数集合中的实际文件名。这可能是导致

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


注:以下内容是根据修订后的内容编写的


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

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 这样你就能得到更多你想要的

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 0C:\Users\在此输入代码6342\Desktop\XML\u to\u CSV\Temp\u Files\XML.CSV 1.C:\Users\c6342\Desktop\XML\u to\u CSV\Temp\u Files\xml1.txt
抱歉,请忽略代码段中的**。我刚刚用**突出显示了重要的内容。您需要用双引号(
)将参数用空格括起来。我也尝试过使用双引号。但无论如何,我的源文件和目标文件位置中都没有空格。我理解你说用引号括住每个值不起作用的说法。请看,我更详细地介绍了如何解释空格。很抱歉,请忽略代码段中的**。我只是用**.Yo突出显示了重要的内容你需要用双引号(
)将参数用空格括起来。我也试过用双引号括起来。但无论如何,我的源文件和目标文件位置中没有空格。我明白你说用引号括住每个值不起作用吗?我将进一步详细介绍如何解释空间。删除_Dummy1.vbs“C:\Users\chandu\Desktop\XML\u to_CSV\Temp\u Files\XML.CSV”“C:\Users\chandu\Desktop\XML\u to_CSV\Temp\u Files\xml1.txt”我尝试过这个。但仍然不起作用。@chandrasekhar我只能离开你发布的内容,无论哪种方式,使用双引号都是避免此类问题的好方法。我不确定在没有解释的情况下,把这句话作为一条评论发表到底能起到什么作用?这是您最初发布的
Delete_Dummy1.vb s C:\Users\enter code herec6342\Desktop\XML\u to_CSV\Temp\u Files\XML.CSV C:\Users\c6342\Deskto p\XML\u to_CSV\Temp\u Files\xml1.txt
。我猜这里的
输入代码6342
是一个打字错误,这可能导致您的原始
文件找不到
错误。对不起。我的用户名是c6342。在发布我的问题后,stackoverflow自动将c6342转换为此处的输入代码c6342。这就是为什么我在评论时删除了该代码并替换为chandu以避免混淆。@chandrasekhar如果你想这样做,你会更好。谢谢@Lankymart。它是有效的。。。谢谢您的时间和帮助。删除_Dummy1.vbs“C:\Users\chandu\Desktop\XML\u to_CSV\Temp\u Files\XML.CSV”“C:\Users\chandu\Desktop\XML\u to_CSV\Temp\u Files\xml1.txt”我试过了。但仍然不起作用。@chandrasekhar我只能离开你发布的内容,无论哪种方式,使用双引号都是避免此类问题的好方法。我不确定在没有解释的情况下,把这句话作为一条评论发表到底能起到什么作用?这是您最初发布的
Delete_Dummy1.vb s C:\Users\enter code herec6342\Desktop\XML\u to_CSV\Temp\u Files\XML.CSV C:\Users\c6342\Deskto p\XML\u to_CSV\Temp\u Files\xml1.txt
。我猜这里的
输入代码6342
是一个打字错误,这可能导致您的原始
文件找不到
错误。对不起。我的用户名是c6342。在发布我的问题后,stackoverflow自动将c6342转换为此处的输入代码c6342。这就是为什么我在评论时删除了该代码并替换为chandu以避免混淆。@chandrasekhar如果你想这样做,你会更好。谢谢@Lankymart。它是有效的。。。谢谢你的时间和帮助。