System()/ windows命令行命令不能更改目录?

时间:2013-06-14 14:29:32

标签: c++ cmd system

我只是想更改当前路径的目录并列出我感兴趣的所有文件/目录.vs 2010的默认目录位于./Projects/目录中。但是我按顺序执行这两个命令:

 ...
system ("cd ../../..");
system ("dir"); //This still lists in the command window, the default Projects directory

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

假设C#标签准确无误,这不是正确的方法。

查看Directory课程。具体来说是Directory.EnumerateFiles()

答案 1 :(得分:1)

对于“系统”调用的大多数实现,每次调用系统都在其自己的环境中运行,从父级继承,但不从先前对系统的调用中携带。您不能将状态从一个system()调用传递到另一个系统(如当前目录),每个都将在父进程的目录中启动。您需要调用一个同时运行“cd”和“dir”命令的系统,或者更改主进程的目录,然后列出文件。

Directory.SetCurrentDir应该注意更改目录,之后系统命令将按预期运行。

正如@Bobson所提到的那样,如果您想要的是一个可以在程序中实际使用的文件列表,那么EnumerateFiles方法就是您的选择。