[英]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"
尽管system32
在PATH
所以我不确定为什么要通过完整路径访问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创建了一个新的控制台(以及新的stderr
和stdout
),您将捕获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.