Windows命令行使用目录和EXE文件参数

时间:2012-05-25 09:40:45

标签: windows command-line

我一直在尝试运行我构建的应用程序并将其输出到文件中。但是,我遇到了执行此操作所需的命令行参数的问题。

这是使用ipconfig我的问题的一个例子。

以下命令有效:

ipconfig > output.txt

虽然这将创建文件,但不会使用ipconfig输出填充它:

start /D "C:\>WINDOWS\system32" ipconfig.exe > output.txt

我认为导致此问题的是使用start,但我不确定。

这是为我解决问题的代码:

            char path[500]; // Create character array
            strcpy (path, "cd "); // Copy 'cd' into the array
            strcat (path, toolLocation); // Copy the path of the tool into the array
            strcat (path, " & ip.exe > output.txt"); // Append on the name of the exe and output to a file
            system (path); // Run the built array

我正在创建一个字符数组然后追加它。这里的重要位是系统调用中使用的&。在执行.exe文件之前,这是作为and并首先执行cd到目录。

3 个答案:

答案 0 :(得分:1)

在您的命令中,>正在重定向start的输出,而不是ipconfig的输出。这就解释了为什么你什么也看不到 - start根本就没有输出任何东西。

根据对问题的评论,您可以使用ShellExecute来实现目标:

ShellExecute(
    0, 
    "open", 
    "cmd.exe", 
    "/C ipconfig > output.txt", 
    NULL, 
    SW_HIDE
);

答案 1 :(得分:0)

我认为你可能不想使用start来改变目录。

试试这个批处理文件:

cd

或者在没有批处理和命令行的情况下使用:

cd "C:\Program Files\Tools\2012"
ip.exe >output.txt

虽然"C:\Program Files\Tools\2012" ip.exe >output.txt" 位于system32,所以我不确定你为什么要通过它的完整路径访问ipconfig exe,但这应该可行。

答案 2 :(得分:0)

错误是这样的:

start /D "C:\>WINDOWS\system32" ipconfig.exe > output.txt

应该是

start /D "C:\WINDOWS\system32" ipconfig.exe > output.txt

路径中没有>。虽然在C:\>的提示符处显示cmd.exe,但不是路径名的一部分,据我所知,>实际上无效。< / p>

此外,我强烈建议您使用:

start /D "%SystemRoot%\system32" ipconfig.exe > output.txt

此外,因为start会创建一个新的控制台(以及新的stderrstdout),您正在捕获start而不是ipconfig的输出。所以你可能想用:

pushd "%SystemRoot%\system32" & ipconfig.exe > output.txt & popd

但是这会尝试将output.txt写入%SystemRoot%\system32并在大多数系统上失败,除非您是管理员。所以给出一条绝对的道路或者简单地忽略这一点:

ipconfig.exe > output.txt

ipconfig.exe 始终位于默认系统PATH变量中,因此除非管理员已“修复”系统,否则它仍然有效,在这种情况下您仍然可以执行此操作:< / p>

%SystemRoot%\system32\ipconfig.exe > output.txt