You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows中程序化启动Shell并预填充代码且不自动执行?

如何在Windows中程序化启动Shell并预填充代码且不自动执行?

当然可以实现!我之前做自动化工具的时候刚好研究过这个需求,给你分享几个实用的方法,都是Windows环境下直接能用的:

方法1:用VBScript模拟输入

VBScript的SendKeys功能可以完美模拟用户在键盘上的输入操作,步骤很简单:

  1. 新建一个文本文件,把下面的代码粘贴进去,保存为prepopulate_cmd.vbs(注意后缀是.vbs):
Set WshShell = WScript.CreateObject("WScript.Shell")
' 启动CMD窗口,要是想启动PowerShell就换成powershell.exe
WshShell.Run "cmd.exe"
' 给窗口留一点加载时间,系统慢的话可以把500改成1000(单位是毫秒)
WScript.Sleep 500
' 把你要预填充的命令写在这里,比如下面的dir C:\Windows
WshShell.SendKeys "dir C:\Windows"
  1. 双击这个vbs文件,就能看到CMD窗口弹出,并且输入框里已经填好了指定命令,按回车才会执行。

如果需要预填充多行命令(用户按回车后会依次执行),可以用+{ENTER}模拟Shift+Enter换行(不会触发执行):

WshShell.SendKeys "cd C:\temp+{ENTER}echo Hello World+{ENTER}pause"

方法2:用PowerShell实现同样的效果

如果你更习惯PowerShell,也可以用它调用COM对象来做同样的事:

$wshell = New-Object -ComObject WScript.Shell
# 启动Windows Terminal的话,把powershell.exe换成wt.exe
$wshell.Run("powershell.exe")
# 等待窗口加载
Start-Sleep -Milliseconds 500
# 预填充PowerShell命令,比如获取系统服务
$wshell.SendKeys("Get-Service | Where-Object {$_.Status -eq 'Running'}")

运行这个脚本,PowerShell窗口会自动弹出并填好命令,完全由用户决定什么时候执行。

注意事项

  • 窗口加载时间:不同系统的启动速度不一样,如果发现预填充没生效,把Sleep的时间调长一点就行。
  • 特殊字符处理:如果你的命令里包含{、}、+这些特殊符号,需要用花括号括起来,比如要输入echo {test},得写成SendKeys "echo {{test}}"。
  • 焦点问题:脚本执行时尽量不要操作其他窗口,不然SendKeys可能会把内容发送到错误的窗口里。

备注:内容来源于stack exchange,提问作者ETL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:38:14