使用默认命令和用户定义消息设置 cmd

使用默认命令和用户定义消息设置 cmd

在 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 搜索,结果得到了我自己博客的链接!我忘了写过这个:

http://it.knightnet.org.uk/2009/05/how-to-show-a-message-of-the-day-motd-at-the-windows-command-prompt.html

您可以根据需要通过注册表在以下任一位置设置自动运行命令:

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 在他的回答,但不需要修改注册表。

相关内容