gpt4 book ai didi

windows - 带有特殊字符的Rust std::process

转载 作者:行者123 更新时间:2023-12-03 11:41:26 29 4
gpt4 key购买 nike

我有一个非常简单的防 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");
}

我认为对问题的解释有些不同,因为获取路径只是我所看到的更大问题的一个示例。通过上述更新也解决了我更大的问题。

最佳答案

正如法国人的评论所言:生成该过程不包括Powershell环境,它将在启动该过程之前将%PATH%扩展为其实际内容。

您需要自己通过PATH获取std::env的内容,或者查找有关如何在powershell session 中启动子进程的Powershell文档。

关于windows - 带有特殊字符的Rust std::process,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59091988/

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