rust - "cd"执行一系列命令时没有效果

标签 rust cmd cd

我想制作一个类似 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/

相关文章:

shell - ubuntu 中的 "CD"不工作,即使是 root

linux - 通过符号链接(symbolic link)的路径歧义

rust - 如何在不知道其结构的情况下创建匹配枚举变体的宏?

rust - 在 Rust 的同一个 crate 文件中从另一个模块调用一个模块的函数

python - 批量感叹号变量

windows - 使用批处理创建文件夹,但前提是它尚不存在

bash - 更改目录 ubuntu 服务器脚本

rust - 定义 From<T> 后自动实现 From<&T>

tcp - 如何同时读取和写入 TCPStream?

batch-file - 批量替换为特殊字符不起作用