如何将 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# 中有空格的变量?的主要内容,如果未能解决你的问题,请参考以下文章

Java用'(撇号/单引号)和\(反斜杠)一起替换问题

关于js怎样替换反斜杠和单引号的问题

linux命令学习-引用符号(反斜杠,单引号'',双引号"")

单引号字符串与双引号字符串中的反斜杠

每日linux命令学习-引用符号(反斜杠,单引号'',双引号"")

Python温习 —— IO读取