C程序中的系统(“cd <path>”)</path>

时间:2014-07-13 11:50:17

标签: c windows cmd system cd


我正在尝试在C程序中使用system()函数 例如,我尝试使用system()函数在桌面上创建目录。
我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   system("cd c:\\Users\\USER\\Desktop");
   system("mkdir test");
   return 0;
}

当我运行此代码时,会创建一个目录,但不会在我的桌面上创建。它在我的项目目录中创建 为什么会这样? 我可以在system()函数中使用cd命令吗?如果没有,是否可以替换cd命令,它将与system()一起使用?

我正在使用Windows操作系统。我正在尝试使用C程序中的system(),因为我使用的是cmd程序 我知道我可以使用WinAPI创建目录而没有任何问题。我不想使用WinAPI,我的问题是如何使用system()使其工作。

3 个答案:

答案 0 :(得分:11)

更改的目录仅持续系统命令的持续时间。该命令启动一个单独的程序,该程序从程序继承其当前目录,但是当该程序退出当前目录时,它就会死掉。

您可以使用&&将命令连接在一起,它将起作用:

system("cd /D C:\\Users\\USER\\Desktop && mkdir test");

我还添加了/D开关,如果从其他驱动器调用CD命令,则不会更改驱动器号。

但是,mkdir完全有能力接受完整路径,所以你可以这样做:

system("mkdir C:\\Users\\USER\\Desktop\\test");

答案 1 :(得分:7)

当你说system("some shell command");时,程序会生成一个shell来运行命令。 shell有自己的当前目录的想法,与你的程序分开。 shell cd就像你要求的那样进入目录,然后死掉,让你的进程的CWD不受影响。

在运行“mkdir”命令之前,您可以简单地说_chdir("c:\\Users\\User\\Desktop");来设置当前目录。然后生成运行它的shell将继承程序的当前目录并使文件夹位于正确的位置。

(就此而言,您也可以说_mkdir("test"),并且不必要地停止使用system。当您尝试做一些值得运行的事情时,您应该只到达system一个外部程序/ shell。)

答案 2 :(得分:1)

你必须在一行上执行这两个命令,

system("cd c:\\Users\\USER\\Desktop && mkdir test");