#c# #vbscript
#c# #vbscript
Вопрос:
Я передаю переменные из своего кода C # в свой VBScript, используя process.StartInfo.Arguments
, но он передает только строковые переменные.
Вот мой пример кода, и он работает для передачи строк.
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
and List<string>
в мой VBScript без использования startinfo.Arguments
?
Ответ №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
Комментарии:
1. Спасибо. Я попробую это
Ответ №2:
Это так не работает. Аргументы программы всегда являются строковыми. Это означает, что вам нужно преобразовать все ваши аргументы в строку и проанализировать их в вашем vbscript
Комментарии:
1. Можете ли вы дать мне пример, в котором я могу передать List<string> в виде простой строки и добавить в свой список в моем vbscript?
2. например, вы можете создать строку вашего
List<string>
экземпляра, разделенную точкой с запятой. напримерstring.Join(";", yourList)
. В vb-скрипте вам нужно снова проанализировать эту строку, разделенную точкой с запятой3. Как насчет того, чтобы я получал свой список из базы данных. Извините, я новичок в vb, поэтому я действительно не понимаю..
4. Я больше не могу вам помочь, поскольку вам не хватает базовых знаний. извините
5. Я понял, как передать список, но я не могу разделить все строки