Я хочу запустить процесс mongoexport.exe через мой код C #, для которого, скажем, аргументы выглядят следующим образом:
- запрос "query_syntax"
Весь приведенный выше текст должен храниться в строковой переменной в коде C # и передаваться в качестве обязательного аргумента.
Проблема теперь в том, что C # внутренне хранит такие строки с escape-символом (). Тот же escape-символ даже сохраняется в командной строке, поэтому мой последний аргумент выглядит следующим образом:
- запрос \ "query_syntax \"
Указанный выше escape-символ является причиной сбоя моего кода, и я никак не могу с этим разобраться.
public static string dateConverter(DateTime dt)
{
long decimalNumber = (long)(dt.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
return (Convert.ToString(decimalNumber, 16));
}
public static void Main(string[] args)
{
try
{
CultureInfo provider = CultureInfo.InvariantCulture;
string instr;
Console.WriteLine("Enter the start date");
instr = Console.ReadLine();
DateTime.TryParseExact(instr, "yyyy/MM/dd", provider, DateTimeStyles.None, out startDate);
Console.WriteLine("Enter the end date");
instr = Console.ReadLine();
DateTime.TryParseExact(instr, "yyyy/MM/dd", provider, DateTimeStyles.None, out endDate);
queryFilter = "{_id:{$gte: ObjectId('" + dateConverter(startDate) + "0000000000000000'), $lte: ObjectId('" + dateConverter(endDate) + "ffffffffffffffff')}}";
string expstring = " --db yourDatabaseName --collection yourCollectionName --type json --query " + queryFilter + " --out yourFilePath --jsonArray";
Process export = new Process();
export.StartInfo.FileName = ExportEXEPath;
export.StartInfo.Arguments = expstring;
export.Start();
}
catch (Exception ex)
{
Console.WriteLine("[ERROR]: " + ex.Message);
}
}