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

问题描述 投票:1回答:3

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

这是使用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到目录。

windows command-line
3个回答
1
投票

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

基于对问题的评论,您可以像ShellExecute一样实现您的目标:

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

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,但这应该有效。


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

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

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

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

ipconfig.exe > output.txt

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

%SystemRoot%\system32\ipconfig.exe > output.txt
© www.soinside.com 2019 - 2024. All rights reserved.