You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中使用字符串插值时,如何处理含空格的变量传入命令?

解决C#中字符串插值调用带空格UNC路径的命令行问题

这个问题我之前处理过好几次,本质是命令行对参数的解析规则在搞鬼:当参数里包含空格时,系统会默认把空格当成参数的分隔符,导致带空格的UNC路径被拆成多个无效的小参数,自然无法正确执行net use命令。

修复方案:给带空格的路径包裹双引号

你只需要在字符串插值时,给filePath变量前后加上双引号即可。注意在C#的字符串里,要表示一个双引号,有两种常用写法:

写法1:使用转义符

// 给filePath包裹双引号,避免空格被当成参数分隔符
System.Diagnostics.Process.Start("net.exe", $"use X: \"{filePath}\" {pwd} /USER:{usr}").WaitForExit();

写法2:使用逐字插值字符串(更直观)

如果你觉得转义符看着麻烦,可以用逐字插值字符串$@"",里面的双引号用两个连续的双引号表示:

System.Diagnostics.Process.Start("net.exe", $@"use X: ""{filePath}"" {pwd} /USER:{usr}").WaitForExit();

原理说明

举个例子,如果你的filePath是\\ServerName\\My Documents\\testfile.txt:

  • 不加引号的话,生成的命令参数是use X: \\ServerName\\My Documents\\testfile.txt 123456 /USER:admin,net命令会把\\ServerName\\My当作路径,Documents\\testfile.txt当作多余参数,直接报错。
  • 加引号后,参数变成use X: "\\ServerName\\My Documents\\testfile.txt" 123456 /USER:admin,net命令会把引号内的内容识别为完整的路径参数,就能正常执行映射了。

另外提醒一下:如果你的pwd或者usr也有可能包含特殊字符(比如空格),同样需要用引号包裹哦!

内容的提问来源于stack exchange,提问作者dguth8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:50:45