【发布时间】:2019-08-20 06:08:41
【问题描述】:
我希望通过我的 C# 代码运行 mongoexport.exe 进程,假设参数如下:
--查询“query_syntax”
以上文本的全部内容应存储在 C# 代码中的字符串变量中,并作为所需参数传递。
现在的问题是 C# 在内部使用转义字符 () 存储此类字符串。命令行中甚至保留了相同的转义字符,使我的最终参数如下所示:
--查询\"query_syntax\"
上面的转义字符是我的代码失败的原因,我找不到任何方法。
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);
}
}
【问题讨论】:
-
请提供代码示例
-
为了您的方便添加它@Lana
-
我在您的参数字符串中看不到任何转义的双引号。
-
@Lana 如果您使用合适的断点调试代码,您将看到传递给命令提示符的参数如下: --db myDatabase--collection myCollection --type json --query \"{_id:{$gte: ObjectId('5c9d60000000000000000000'), $lte: ObjectId('5c9eb180ffffffffffffffff')}}\" --out myFile.json --jsonArray
-
在手表中它会显示反斜杠,但实际上当你发出它时控制台。或文件,将没有反斜杠。
标签: c# shell command-line command command-line-arguments