在 winform 应用程序中单击按钮时,我正在执行 cmd.exe 文件(使用系统(“cmd.exe”);),该文件完全打开并显示以下内容:
Microsoft Windows XP [Version 6.1.7601]
(C) Copyright 1985-2001 Microsoft Corp.
C: A\Documents\Visual Studio 2010\Projects\WinformTest\WinformTest>
我想要的是当用户单击按钮时,cmd.exe 使用默认命令打开并显示如下消息:
Please change command options and press enter to get started experimenting
C: A\Documents\Visual Studio 2010\Projects\WinformTest\WinformTest> reduction -x 33554432 -i
注意,已经存在一个新命令和一条消息。
谁能告诉我该怎么做?
更新
cmd /k echo Please change command options and press enter to get started
experimenting & echo reduction -x 33554432 -i
这显示了最接近的解决方案,但每次打开 cmd 时我都必须设置命令。是否可以设置一次命令并保存设置,以便下次打开 CMD 时显示消息?或者,当我使用系统(“cmd.exe”)在我的应用程序中打开它时,是否可以传递这些命令选项/开关,以便在运行时完成此消息设置?
解决了
system("cmd.exe /k echo Please change command options and press enter to get started
experimenting & echo reduction -x 33554432 -i" );
但是这呼应了 maeesage,但命令没有在提示符下出现。
答案1
一种方法是利用命令处理器鲜为人知的自动运行功能。我记得这是可行的,所以进行了 Google 搜索,结果得到了我自己博客的链接!我忘了写过这个:
您可以根据需要通过注册表在以下任一位置设置自动运行命令:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor
我使用以下设置:
%USERPROFILE%\.profile.cmd
每次我启动命令行时,都会运行该 cmd 文件。在自动运行命令中,您可以简单地显示文本文件的输出。在您的应用中,将一些文本转储到文本文件中,启动命令行。然后您应该清空文本文件(不要删除它),这样您就不会一直收到提示。
如果需要,您可以添加一些进一步的智能,以便文本文件仅显示在您的应用程序中。
当然,您也可以通过应用程序动态更改注册表。
答案2
cmd.exe
接受一个可选/k
参数,您可以使用该参数让它在启动时执行命令。要使用它来获得接近您想要的结果,如下所示的内容似乎很接近:
cmd /k echo Please change command options and press enter to get started experimenting & echo reduction -x 33554432 -i
这将打开一个窗口并显示:
如您所见,您可以通过在每个命令之间添加“&”来执行多个命令。
如果你想做一些更复杂的事情,你可以让它执行一个单独的.cmd/.bat 脚本来实现类似于 Julian Knight 在他的回答,但不需要修改注册表。