【发布时间】:2019-11-29 01:16:07
【问题描述】:
我有一个非常简单的 rust 程序,但它并没有达到我的预期。在 Windows 上运行,使用 powershell 提示符,我可以执行以下操作来显示 path:
echo "%PATH%"
我有一个简单的 Rust 程序:
Command::new("echo")
.arg("%PATH%")
.spawn()
.expect("ls command failed to start");
该命令将启动并运行,但会输出:
%PATH%
而不是路径内容,就像我期望的那样。其他不使用特殊字符的命令似乎按预期工作,所以我怀疑它与处理它们有关,但我没有看到在 Rust 中使命令比现在更原始的方法。
我尝试了各种格式,但它要么无法运行命令,要么运行相同。
我也尝试过使用 $env:path,但这总是无法从 Rust 运行并出现 cannot find the path specified 错误。
对处理这个有什么建议吗?我可以将内容写入文件并运行该文件,但是直接从其他语言运行这些类型的命令可以正常工作,所以我认为它也应该可以在 Rust 中运行。
谢谢!
更新:
通过以下方式设法获得预期结果:
let out = Command::new("cmd")
.arg("/C")
.arg("echo %PATH%")
.spawn()
.expect("ls command failed to start");
}
我认为这个问题的解释有点不同,因为获取路径只是我看到的一个更大问题的一个例子。用上面的更新也解决了我更大的问题。
【问题讨论】:
-
我对Windows不太了解,但是在Linux上,这种简写是通过终端/shell扩展的。您必须使用另一个 crate 来读取环境变量。