1

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

这是我使用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

我正在创建一个字符数组,然后附加到它。这里最重要的一点是&在系统调用中使用。and在执行 .exe 文件之前,这是对目录的第一次 cd'ing。

4

3 回答 3

1

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

根据对问题的评论,您可以通过以下方式实现目标ShellExecute

ShellExecute(
    0, 
    "open", 
    "cmd.exe", 
    "/C ipconfig > output.txt", 
    NULL, 
    SW_HIDE
);
于 2012-05-25T10:53:50.790 回答
0

错误是这样的:

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

应该

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

没有>在路径中。据我所知,尽管C:\>在提示中显示cmd.exe不是路径名的一部分,并且>实际上对于该目的无效。

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

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

此外,因为 start 创建了一个新的控制台(和新的stderrand stdout),所以您正在捕获startnot of的输出ipconfig。所以你可能想使用:

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

但这将尝试写入output.txt并且%SystemRoot%\system32在大多数系统上都会失败,除非您是管理员。所以给出一个绝对路径或者干脆忽略crud:

ipconfig.exe > output.txt

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

%SystemRoot%\system32\ipconfig.exe > output.txt
于 2012-05-25T12:35:16.297 回答
0

而不是使用start我认为您可能想要使用cd来更改目录。

试试这个批处理文件:

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

或者不使用批处理而只使用命令行:

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

虽然system32PATH所以我不确定你为什么要通过它的完整路径访问 ipconfig exe,但这应该可以。

于 2012-05-25T11:07:21.290 回答