什么样的动作是“运行”命令以及如何自动化它们?

new*_*bie 8 windows run-dialog windows-10

我在以下上下文中的主要问题:

  1. 从 Windows 的角度来看,什么是“运行”命令?
  2. 如何自动化“运行”命令?
  3. 运行”是否类似于 Windows 资源管理器的地址栏?


正如你们中的许多人可能已经注意到的那样,您必须点击几下才能进入 Windows 10 中控制面板的声音属性菜单。

  • 不必在设置中搜索描述性词语中的链接- 声音
    右键单击任务栏扬声器图标>声音设置>设置:声音
  • 您可以(对于该菜单中的每个选项卡,在哪里option0123each)
    WinKey+ R> mmsys.cpl||control mmsys.cpl,,[option]

这让我想到了如何通过在我的任务栏示例上创建批处理来自动执行上述操作,但我不确定要使用哪些命令。您可以轻松地运行脚本,批处理文件,但它不是同样的事情,我找不到任何地方如何使一个批处理文件,当您在“键入其名称运行运行(如cmdsyseditregeditmsconfig,等)

LPC*_*hip 19

批处理文件只是一个指令列表,类似于您在命令提示符中键入的内容。

在命令提示符下,您只需键入其文件名即可使用 .exe 或 .com 运行应用程序。

例如,如果当前文件夹中有文件 example.exe,则只需example在命令提示符中键入即可启动该文件。也可以在批处理文件中完成相同的操作。

只需放在example一行中即可启动该文件。

但是,当您的文件没有 .exe 或 .com 扩展名时,运行对话框仍会启动它,但如果您只输入文件名,则命令提示符将不会启动。

因此,从运行对话框中,mmsys.cpl将起作用,而在命令提示符中则不起作用。

这样做的原因是资源管理器能够理解文件关联,而命令提示符则不能。所以为了弥补这一点,微软添加了命令start.

如果您输入start filename.ext命令提示符,文件将使用资源管理器的引擎运行,因此与该文件扩展名关联的任何内容都将启动该文件。.cpl直接与资源管理器关联以打开控制面板的对话框。

所以在你的批处理文件中,你可以简单地输入:

start mmsys.cpl
Run Code Online (Sandbox Code Playgroud)

如果您开始思考,是的,您可以通过键入直接从命令提示符将 word 文档启动到 word 中 start "My Awesome Worddocument.docx"

  • @newbie 对不起,是你不明白这是如何工作的。没有“运行命令”。有几种不同的 Windows 可执行文件类型,“运行”只是一个小窗口,允许您*手动*输入它们的名称。如果要创建运行此类命令的图标,您可以按照本答案中的描述创建一个批处理文件并创建一个快捷方式,或者您可以安装一些允许您模拟按键和按钮点击的宏引擎。在这种情况下,这似乎是一个容易出错的矫枉过正。 (17认同)
  • @新手我正在解释这一点。要从批处理中“运行”某些东西,就像运行对话框那样,您可以直接或通过启动使用命令。请记住,命令提示符非常有限,例如除非您使用其他工具,否则它无法发送按键等,但如果您确实需要,可以运行其他脚本。 (9认同)
  • @Gnudiff 实际上,“运行”对话框有一些与文件关联无关的特定行为,但它们也可通过 `start` 命令使用。尝试在命令提示符下输入“winword”,然后尝试“启动 winword”;查找实际上是针对注册表项进行的。 (2认同)

Ale*_*evo 14

LPChip 的优秀答案解决了如何从批处理文件中执行您想要的操作,但您也可以创建一个桌面快捷方式来运行与您在“运行...”对话框中键入的命令完全相同的命令:

  1. 右键单击您的桌面并选择新建 -> 快捷方式。
  2. 完全按照您在“运行...”对话框中执行的操作键入命令,其中显示“键入项目的位置:”。要从您的问题中运行示例,您可以输入control mmsys.cpl,,2. 点击下一步”。
  3. 如果需要,更改快捷方式的名称,然后单击“完成”。

为命令创建快捷方式

“跑……”是做什么的

如果您想对“运行...”对话的功能提供更“技术性”的回答,它会调用一个系统 API 函数(最有可能ShellExecuteEx),该函数大致执行以下操作:

  • 解析文件关联,因此如果您给它的路径不是可执行文件,而是文档——比如 jpeg 图像或 word 文档,它就知道用哪个程序打开文档。
  • 解析和使用环境变量,例如PATHHOMEPATH。如果您输入%HOMEPATH%“运行...”对话框,它将打开您用户的配置文件文件夹。并且PATH是一个特殊的系统环境变量,它包含一个默认位置列表,Windows 将在其中尝试查找程序。这就是为什么您可以只输入control而不使用control.exe(即C:\Windows\System32\control.exe)的完整路径。
  • 正如@IMSoP 在评论中提到的,除了PATH环境变量之外,另一个检查可执行路径的地方是注册表。更具体地说,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths对于系统范围的路径,以及HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths特定于当前用户的路径。
  • 将额外的命令行参数传递给程序。在您的示例中control mmsys.cpl,,[option]control是运行的文件,mmsys.cpl,,[option]是命令行参数。

您的假设似乎是正确的,即地址栏执行相同的操作,但它会尝试导航到路径,以防它是可以显示的文件夹。

start来自LPChip 答案的命令行命令是在cmd批处理脚本中执行相同操作的方法。

打开快捷方式也大致相同。

对于那些对正在发生的事情的全貌感兴趣的人,我建议阅读MSDN 上关于应用程序注册的这篇文章,它提供了有关所有工作原理的全面概述。

  • @IMSoP,这是您对注册表查找特定于“运行...”的一个很好的猜测;) 然而,事实并非如此。它适用于所有使用相同底层 API 的地方:cmd 中的“start”命令、资源管理器地址栏、快捷方式路径,以及“运行...”对话框。 (2认同)