gpt4 book ai didi

windows - 当命令包含空格时,cmd/C 在 Rust 中不起作用

转载 作者:可可西里 更新时间:2023-11-01 11:24:24 27 4
gpt4 key购买 nike

我想从 Rust 程序运行这个命令:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "https://stackoverflow.com/"

在 cmd 中,这有效。

cmd /C ""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "https://stackoverflow.com/""

在 C# 中,这有效。

var comm = @"""""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"" ""https://stackoverflow.com/""""";
System.Diagnostics.Process.Start("cmd", "/C " + comm);

在 Rust 中,这是行不通的。

let comm = r#"""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "https://stackoverflow.com/"""#;
let output = Command::new("cmd")
.args(&["/C", comm])
.output()
.expect("failed to execute process");

我收到以下错误。

The network path was not found.

但是,当 commecho hello 时,它会起作用。

我尝试了另外两种方法:

  1. 这个

    let comm = r#"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe https://stackoverflow.com/"#;

    'C:\Program' is not recognized as an internal or external command,
    operable program or batch file.
  2. 这个

    let comm = r#""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe https://stackoverflow.com/""#;

    '\"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe\"' is not recognized as an internal or external command,
    operable program or batch file.

最佳答案

这是 a known issue .不幸的是,用于转义参数的 Windows 规则非常重要且难以正确执行。

这段代码:

let comm = r#""C:\Program Files\Google\Chrome\Application\chrome.exe" https://stackoverflow.com/"#;
let mut cmd = Command::new("cmd");
cmd.arg("/c");
cmd.arg(comm);

执行这个:

"cmd" "/c" "\"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\" https://stackoverflow.com/"

不幸的是,内部引号被转义了,尽管在这种情况下它们不应该被转义。


作为变通方法,在许多情况下,您实际上不需要使用 cmd。在这些情况下,直接执行流程更为明智:

let output = Command::new(r#"C:\Program Files\Google\Chrome\Application\chrome.exe"#)
.args(&["https://stackoverflow.com/"])
.output()
.expect("failed to execute process");

关于windows - 当命令包含空格时,cmd/C 在 Rust 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44757893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com