Передача переменных Int и List в VBScript

#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. Я понял, как передать список, но я не могу разделить все строки