在C:上使用C ++中的tree命令

时间:2014-02-12 08:30:59

标签: c++ windows tree cmd cd

我想在我的C ++控制台应用程序中使用Windows CMD树命令。我的代码:

system("cd c:/");
system("tree");

问题是命令树将在程序运行的文件夹路径上执行,而不是在C://上执行。有办法解决这个问题吗?

5 个答案:

答案 0 :(得分:1)

为什么不:

system("tree c:\");

TREE [drive:][path] [/F] [/A]

   /F   Display the names of the files in each folder.
   /A   Use ASCII instead of extended characters.

答案 1 :(得分:0)

您可以使用windows.h中的SetCurrentDirectory。这个页面有一个演示: http://msdn.microsoft.com/en-us/library/windows/desktop/aa363806%28v=vs.85%29.aspx

答案 2 :(得分:0)

你的问题是system("cd c:/")在shell中执行,然后shell退出。 [这也是错误的,因为你使用了错误的斜杠,它应该是"cd c:\\" - 假设我们在谈论Windows系统时,需要在输出中产生一个反斜杠的双反斜杠。

有几种不同的方法可以做到这一点:

  1. 使用chdir()(或SetCurrentDirectory)函数调用来更改当前工作目录的主进程,然后调用system("...")。这是最简单的解决方案。

  2. 将所有命令生成到批处理文件中,然后将批处理文件传递给system

  3. 使用类似_popen()的命令打开命令shell,并将命令传递到从中获取的管道。
  4. 手动创建管道并将它们连接到运行命令提示符的进程的标准输入和标准输出。

答案 3 :(得分:0)

仅适用于Windows中的程序,包括“windows.h”,然后

SetCurrentDirectory("c:/");
system("pwd");

答案 4 :(得分:0)

虽然我仍然很好奇你为什么要这样做,但你可以尝试在一次system()电话中运行所有命令:

system("cd c: && c: && tree");

如果您当前不在驱动器c:(因为c:没有这样做),则需要第二个cd来更改驱动器号。