使用system命令在Windows下的c程序内更改目录

时间:2012-05-30 07:16:36

标签: c++ c windows system

我有一个问题,我必须从C程序内部运行命令提示符命令。这就是我做的事情

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


int main(){



system("cd \Users");
system("Dir");

}

问题是我想首先cd进入用户然后执行命令Dir,其中当前程序输出它无法找到指定的路径并且Dir在父进程目录中执行,即程序源文件所在的位置。

我想要做的实际任务只是想从C程序内部的特定目录运行java文件。该java文件位于C:\ Users \ Abdullah \ pro中。我的C程序的父目录是C:\ Users \ Cprog。请告知我该怎么办

5 个答案:

答案 0 :(得分:5)

system()开始一个新流程。此新进程会更改当前目录,然后结束。程序进程的当前目录不会更改。

您需要chdir()(或_chdir())。

答案 1 :(得分:5)

您的程序有一些不正确的假设。首先,“cd”和“dir”不是程序,而是内置在shell中的命令cmd.exe。其次,我怀疑你根本不需要更改当前目录。

无论哪种方式,因为这是一个Windows系统,我会look at an example on how to start a program with CreateProcess()

要更改当前目录,请查看CreateProcess()调用的lpCurrentDirectory parameter

答案 2 :(得分:2)

仅适用于Windows,还有此SetCurrentDirectory()功能。

答案 3 :(得分:0)

' cd '不是您尝试执行的单独可执行文件。通常'cd'是shell /命令的内置命令。你不能用'system()'执行'cd',并希望它在你的程序中相应地工作。如果希望在程序内执行目录更改,则必须使用'chdir()'函数(或系统调用)。请参阅“chdir()”的手册页。

答案 4 :(得分:0)

这应该有效:

system("dir Users\\whatEverNextFolder > test.txt");