【问题标题】:Cannot change directory using system() in C++ [duplicate]无法在 C++ 中使用 system() 更改目录 [重复]
【发布时间】:2017-04-04 04:02:13
【问题描述】:

正如标题所说,即使是超级简单的 C++ 程序,我也不能使用“cd”。更准确地说,我可以使用它(即它可以编译并且不会抛出任何错误),但它会继续运行,就像我没有一样。

我的代码如下:

#include <iostream>
#include <cstdlib>

int main()
{
    system("cd");
    system("dir");

    system("cd C:\\Users\\Sajado");
    system("dir");

    return 0;
}

输出窗口两次返回项目目录的目录列表。我也尝试过使用其他文件夹的路径,无论是更高的还是更低的,并且 cd .. 也没有效果。

如果有帮助,我正在使用代码块。无论如何,我都不是 C++ 或 cmd 专家,所以我可能遗漏了一些非常明显的东西。任何人都知道为什么这可能行为不端?

【问题讨论】:

  • system() 调用是独立的。每次你都会得到一个新的环境。要执行您想要的操作,请创建一个批处理文件并在单个 system() 中从 cmd.exe 执行该文件。
  • 为什么不使用chdir

标签: c++ cmd system cd


【解决方案1】:

正如@drescherjm 评论指出的那样,system 调用被相互隔离解释,因此如果您将工作目录更改为一个,它将不会反映在后续调用中。

您可以这样做: system("cd C:\\Users\\Sajado &amp;&amp; dir"); 或者,更好的是,使用 dir 命令的参数:system("dir C:\\Users\\Sajado");

【讨论】:

    【解决方案2】:

    作为explained here,你需要这样做:

    system("cd C:\\Users\\Sajado && dir");
    

    因为

    更改后的目录仅在系统运行期间持续 命令。该命令启动一个单独的程序,该程序继承其 程序中的当前目录,但是当该程序退出时 当前目录随之消失。

    【讨论】:

    • 嗯,好的。感谢大家的回答。很有帮助。
    猜你喜欢
    • 2020-04-23
    • 1970-01-01
    • 2018-02-12
    • 2013-01-11
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    相关资源
    最近更新 更多