C# 什么';在.NET控制台应用程序参数中处理\的正确方法是什么?

C# 什么';在.NET控制台应用程序参数中处理\的正确方法是什么?,c#,.net,cmd,C#,.net,Cmd,我编写了一个小应用程序,将文件从源复制到目标。我需要两个参数,源和目标。下面的命令工作正常 test.exe "C:\source path" "D:\destination" 我遇到的问题是,当我在“中传递参数,并以\结束时,它就会出错 例如: test.exe "C:\source path\" "D:\destination" 由于\是转义字符,因此test.exe将第一个参数作为C:\source path“而不是C:\source path\ 那么,处理这个问题的正确方法是什么呢

我编写了一个小应用程序,将文件从源复制到目标。我需要两个参数,源和目标。下面的命令工作正常

test.exe "C:\source path" "D:\destination"
我遇到的问题是,当我在
中传递参数,并以
\
结束时,它就会出错

例如:

test.exe "C:\source path\" "D:\destination"
由于
\
是转义字符,因此test.exe将第一个参数作为
C:\source path“
而不是
C:\source path\

那么,处理这个问题的正确方法是什么呢

即使是最基本的示例也显示,从命令行传递的奇怪行为--“也会转换为

@使字符串成为逐字逐句的文字

在逐字字符串文字中,分隔符之间的字符将逐字解释,唯一的例外是引号转义序列


阅读更多内容

\
不是CMD的“转义字符”,是…@AlexeiLevenkov谢谢你的评论,我已经更新了标题以使其更清楚。结果是一些“众所周知”的行为:(.@AlexeiLevenkov在我发布这个问题之前,我阅读了你标记为重复的链接,但没有答案,只是解释。我的意图是找到解决这个问题的方法或解决这个问题,而不是它以这种方式工作的原因。你可以在一开始就链接它(而且你的问题更像你的评论)为了避免答案中的一些混乱…但我担心这会脱离主题,因为实际上有两个选项-查找您喜欢的解析器(脱离主题搜索链接)或编写您自己的解析器(需要文章中的代码,我可能会搜索现有的).@alexeilevenkov更新了答案,如果答案是C#代码而不是命令提示符,则使用MSDnindite中的链接。您是否尝试过从命令行使用它?您将获得
@C:\source path“
,而不是'C:\source path`作为argument@alexeilevenkov如果我错了,我很抱歉,但是问题的标题是“.NET控制台应用程序”“非命令行或批处理”可能会让人困惑…但如果您仔细阅读问题(甚至在编辑之前)-“以下命令工作正常…”至少向我解释了CMD命令行参数的问题,而不是任何其他调用工具的方式。(顺便说一句,我认为您的示例有点奇怪-使用
过程。开始
会更有意义)。
static void Main(string[] args)
{
 foreach(var s in args)
 {
    System.Console.WriteLine(s);
 }
}
 test.exe @"C:\source path\" @"D:\destination"