我使用process.StartInfo.Arguments
将变量从我的C#代码传递给我的VBscript,但它只传递字符串变量。
这是我的示例代码,它可以用于传递字符串。
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "E:\\Libraries\\Document\\Merge.vbs";
process.StartInfo.WorkingDirectory = "E:\\Libraries\\Document\\";
process.StartInfo.Arguments = FileName;
process.Start();
如何在不使用int
的情况下将List<string>
和startinfo.Arguments
传递给我的VBscript?
答案 0 :(得分:1)
这不起作用。程序的参数总是字符串。这意味着您必须将所有参数转换为字符串并在vbscript中解析它们
答案 1 :(得分:1)
参数总是字符串值,您需要将它们转换为字符串才能传递它们。
例如,可以使用string.Join
int myInt
List<string> myStringList;
List<int> myIntList;
string intAsString = myInt.ToString();
string stringListAsString = string.Join(",",myStringList);
// using System.Linq
string stringListAsString = string.Join(",",myIntList.Select(x => x.ToString());
要解码另一端,您需要使用split函数,假设您已将参数复制到匹配变量中。
myInt = CInt(intAsString)
myStringList = Split(stringListAsString,",")
myIntList = Split(intListAsString,",")
for a = LBound(myIntList) to Ubound(myIntList)
myIntList(a) = CInt(myIntList(a))
next a
如果参数的剪切量太大,您总是可以将它们写入临时文件并将文件名传递给VB脚本