C# 我应该使用@或//符号从命令行提供路径吗

C# 我应该使用@或//符号从命令行提供路径吗,c#,command-line,path,C#,Command Line,Path,我正在开发一个命令行实用程序,并在批处理文件中作为参数传递路径。我是否需要将@符号添加到我的应用程序中的路径,以防止像“\”这样的字符转义 这指定使用@符号,但目前我没有使用@或\\来防止转义。当我按原样通过我的道路时,它运行良好。为什么会这样 我会这样称呼它,在我的批处理文件中: foldercleaner.exe -tPath: "C:\Users\Someuser\DirectoryToClean" 节目: class Program { public stati

我正在开发一个命令行实用程序,并在批处理文件中作为参数传递路径。我是否需要将@符号添加到我的应用程序中的路径,以防止像“\”这样的字符转义

这指定使用@符号,但目前我没有使用@或\\来防止转义。当我按原样通过我的道路时,它运行良好。为什么会这样

我会这样称呼它,在我的批处理文件中:

foldercleaner.exe -tPath: "C:\Users\Someuser\DirectoryToClean"
节目:

class Program
    {
        public static void Main(string[] args)
        {
            if(args[0] == "-tpath:" || args[0] == "-tPath:"  && !isBlank(args[1]))  {
                    clearPath(args[1]);
            }
            else{

                Console.WriteLine("Parameter is either -tpath:/-tPath: and you must provide a valid path");
            }
    }  
清除路径方法:

public static void clearPath(string path)
        {
            if(Directory.Exists(path)){

                int directoryCount = Directory.GetDirectories(path).Length;

                if(directoryCount > 0){

                    DirectoryInfo di = new DirectoryInfo(path);

                    foreach (DirectoryInfo dir in di.GetDirectories())
                    {
                        dir.Delete(true); 
                    }

                }
                else{

                    Console.WriteLine("No Subdirectories to Remove");
                }

                int fileCount = Directory.GetFiles(path).Length;

                if(fileCount > 0){

                    System.IO.DirectoryInfo di = new DirectoryInfo(path);

                    foreach (FileInfo file in di.GetFiles())
                    {
                            file.Delete(); 
                    }


                }
                else{

                    Console.WriteLine("No Files to Remove");
                }

                }
            else{

                Console.WriteLine("Path Doesn't Exist {0}", path);
            }
        }

特殊字符(如“or”)的转义只需在代码中字符串文本内部进行

var str = "This is a literal";
var str2 = otherVariable; //This is not a literal
调用应用程序时不需要转义字符


但是,例如使用批处理时,可能会有一组不同的特殊字符,其中包含不同类型的转义字符。例如,如果要传递“%”(来自批处理),则需要传递转义序列“%”“

转义发生在字符串文本上。这段代码中没有文字,只有变量。没有必要逃避这本书的内容variables@AH!, 因此,除非我用路径声明变量,否则我不必担心,对吗?如果声明变量并用表示路径的字符串文字初始化它,则需要文字前面的逐字@字符来避免转义。在您的代码中,文本来自命令行环境,它可能有自己的方式来处理\(如果需要任何方法)