我想制作一个类似 CLI 的小型项目,我可以在其中执行一系列命令。所以,我写了这段代码:
let commands = ["cd C:\\Users\\MegaMind\\Documents\\dynamodb_local_latest","dir","echo rust"];
for ccc in &commands {
let rc = Command::new("cmd")
.arg("/C")
.arg(ccc)
.output()
.expect("there was an error");
io::stdout().write_all(&rc.stdout).unwrap();
// io::stdout().write_all(&rc.stderr).unwrap();
}
它似乎在源代码文件夹中运行dir
命令,而不是C:\\Users\\MegaMind\\Documents\\dynamodb_local_latest
。如何让cd
生效?
最佳答案
工作目录适用于每个进程。每个命令都是一个单独的进程。 cd
命令更改该进程的工作目录,然后该进程退出并且该目录更改的记录消失。然后您启动一个新进程(运行 dir
的进程),它仍然使用原始工作目录。
如果您想为任何给定的子命令设置工作目录,只需 use the current_dir
method设置时或(取决于您的需求)您可能需要 change the Rust process's working directory (在未重写时将由子进程继承)。
关于rust - "cd"执行一系列命令时没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73822157/