如何将 PATH 环境变量替换为双引号 + 反斜杠那些在 C# 中有空格的变量?
Posted
技术标签:
【中文标题】如何将 PATH 环境变量替换为双引号 + 反斜杠那些在 C# 中有空格的变量?【英文标题】:How do I replace PATH Environment variables to double quote + backslashes those which have spaces in C#? 【发布时间】:2018-12-09 10:16:52 【问题描述】:语言版本:C# - 操作系统:Win 10 - IDE:Visual Studio
我在让用户设置路径时遇到了问题。 当路径没有空格时,一切都很好。没有问题。
当路径带有空格时,我将数据转发到的 CLI 不接受它并立即关闭。
那是因为它在到达时错过了正确的语法(开头和结尾的双引号 + 双反斜杠)。 所以正确的语法是:
app.exe -q MP3_128 -p "C:\\test test\\"
由于我在 WMF 中使用 Environment.GetFolderPath,我不知道如何将这些添加到其输出中...
Code:
if (Settings.Default.download == "")
MessageBox.Show("Be sure your download path doesnt contain any spaces!");
String path = Environment.GetFolderPath (Environment.SpecialFolder.MyMusic);
String pathDouble = path.Replace("'", "\"");
Settings.Default.download = @"""C:\\Test\DOWN LOADS""";
Settings.Default.Save();
到达这里
Code:
if (Settings.Default.sm != "")
download.StartInfo.FileName = Settings.Default.sm;
string a = " -q " + qualitys + " -p " + Settings.Default.download + " " +
info[result.SelectedIndex].link;
Debug.Write(a);
download.StartInfo.Arguments = a;
硬编码的默认路径集有效。 但是当用户根据自己的喜好使用 GUI 更改路径时,它就消失了。
【问题讨论】:
What is `cmd /s` for? 也许吧。 简单的path = "\"" + path + "\"";
怎么样?但也许我没有正确回答这个问题?
我已将 String pathDouble... 替换为 path = "\"" + path + "\""; ,但不起作用
CMD /s 不需要,因为它已经可以到达.exe,它只是在设置下载位置时引起问题。
【参考方案1】:
我认为我编辑了错误的代码。
这段代码,我已经编辑过了,现在只需要在驱动器后面加一个\:
using (var folderDialog = new FolderBrowserDialog())
if (folderDialog.ShowDialog() == DialogResult.OK)
Settings.Default.download = @"""" + folderDialog.SelectedPath + @"\\""";
Settings.Default.Save();
txb_download_folder.Text = Settings.Default.download;
但是怎么做呢?
第一个 @"\" 中的简单 \ extra 会导致 \"C:\test test\\"。
【讨论】:
不知何故不需要在第一个@“\”中添加额外的\,它现在可以正常工作了!以上是关于如何将 PATH 环境变量替换为双引号 + 反斜杠那些在 C# 中有空格的变量?的主要内容,如果未能解决你的问题,请参考以下文章
linux命令学习-引用符号(反斜杠,单引号'',双引号"")