我想制作一个类似 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();
}
Run Code Online (Sandbox Code Playgroud)
看起来它dir在源代码的文件夹中运行命令,而不是在C:\\Users\\MegaMind\\Documents\\dynamodb_local_latest. 我怎样才能使其cd生效?
工作目录适用于每个进程。每个Command都是一个单独的过程。该命令更改该进程的cd工作目录,然后该进程退出并且该目录更改的记录消失。然后您启动一个新进程(正在运行的进程),它仍然使用原始工作目录。dir
如果你想为任何给定的子命令设置工作目录,只需在设置时使用该current_dir方法,或者(取决于你的需求)你可能想要更改 Rust 进程的工作目录(当子进程启动时,该目录将被子进程继承)不被覆盖)。
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |