繁体   English   中英

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

[英]Windows command line using directory and EXE file parameters

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

这是我使用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和第一cd'ing到该目录执行.exe文件之前。

在您的命令中, >将重定向start的输出,而不是ipconfig的输出。 这就解释了为什么您什么都看不到– start只是不输出任何东西。

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

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

我认为您可能不希望使用cd来更改目录,而是使用start

试试这个批处理文件:

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

或用于不带批处理而仅用于命令行的情况:

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

尽管system32PATH所以我不确定为什么要通过完整路径访问ipconfig exe,但这应该可以工作。

错误是这样的:

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创建了一个新的控制台(以及新的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM