C#插值与复杂命令中变量加引号方法及Robocopy空格文件名处理
解决C#插值语法中变量加引号与Robocopy空格问题
1. 给C#插值变量添加引号的正确方式
当需要给插值变量包裹引号以处理带空格的内容时,核心是正确转义双引号:
- 如果使用逐字字符串(@前缀),双引号需要用两个连续的双引号
""来转义,写法示例:
简单来说,外层的$@"""要包裹的变量内容"""""会被解析成一个实际的双引号,把中间的变量完整包裹起来。 - 如果不使用逐字字符串,用
\"转义双引号即可,写法示例:$"\"要包裹的变量内容\""
2. 修改Robocopy命令以支持带空格的filename
你的原命令仅给目标路径加了引号,但filename变量如果包含空格,同样需要用引号包裹才能被命令行识别为完整参数。修改后的代码如下:
System.Diagnostics.Process.Start("robocopy.exe", $@"X: ""C:\users\username\desktop\test"" ""{filename}""").WaitForExit();
这里把{filename}用""{filename}""包裹——在逐字插值字符串里,""会被解析为单个双引号,这样不管filename有没有空格,都会被Robocopy当作一个完整的文件名参数处理。
举个实际例子,如果filename是"my document.txt",最终生成的命令参数会是:
X: "C:\users\username\desktop\test" "my document.txt"
这样就能完美处理带空格的文件名了。
内容的提问来源于stack exchange,提问作者dguth8
相关产品推荐
相关产品推荐

