问题是,我无法弄清如何更改默认行为,使得批处理文件通过 Windows 终端实例内的 cmd 实例运行。
我可以轻松地打开 Windows 终端,启动一个 cmd 实例,进入正确的目录并运行批处理文件…但是这需要很多努力。我想只需运行批处理文件,就可以通过 Windows 终端内的 cmd 提示符运行它。
将 HKEY_CLASSES_ROOT\batfile\shell\open\command
的默认值改为以下内容,即可在双击时获得此行为:
"%1" %*
致:
"C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\wt.exe" -p "Command Prompt" "%1" %*
或者使用ftype
命令:
ftype batfile="C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\wt.exe" -p "Command Prompt" "%1" %*
你需要将<user>
替换为当前用户名目录,并且这个wt.exe
路径(C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\
)是基于你是否从Microsoft Store安装了Windows终端,如果没有,则需要找到wt.exe
的路径并使用它。Windows环境变量%LOCALAPPDATA%
和%USERPROFILE%
对我不起作用,所以我在这里使用了完整路径。
你可以创建一个注册表项,使得可以使用Windows终端打开BAT
文件并使用CMD
运行:
regedit
并导航到HKEY_CLASSES_ROOT\batfile\shell
键。wtopen
的键,其默认值为Open with Windows Terminal
:HKEY_CLASSES_ROOT\batfile\shell\wtopen\command
,其默认值为:"C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\wt.exe" -p "Command Prompt" "%1" %*
现在,当您右键单击BAT
文件并单击它时,将会出现一个新条目"Open with Windows Terminal",它将打开一个带有选定批处理文件的Command Prompt面板的新Windows Terminal:
已使用Windows Terminal 0.11.1121.0进行测试
Command Prompt (cmd
)配置文件的默认名称为"Command Prompt"。如果您有默认值以外的其他名称,则必须使用-p "<name>"
参数进行更改。
"%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe"
。虽然没有尝试过,但应该可以通过命令提示符更改默认设置,具体方法为 ftype batfile="%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe" %1 %*
。 - Stephan%LOCALAPPDATA%
和%USERPROFILE%\AppData\...
但它们不起作用,但是使用ftype
是更快的设置方式,是的。 - Christos LytrasHKCR\batfile\shell\open\command
对你没有起作用吗? - Christos Lytras其他回答可行,但我也想让批处理文件在Windows终端已经打开的情况下作为新标签页打开,并允许没有绝对路径的脚本:
打开注册表编辑器并导航到此键:
Computer\HKEY_CLASSES_ROOT\batfile\shell\open\command
然后将(Default)
的值修改为以下内容:
wt.exe -w 0 new-tab -d . "%1" %*
-w 0
参数指定在当前文件的工作目录下的一个 new-tab
中打开第一个或现有窗口: -d .
提示:如果您设置了批处理文件静默运行,不想让其弹出,请将其从 .bat
改为 .cmd
!
pause
。当它到达该点时,它将停止并提示您按任意键退出,直到您这样做为止,保持其打开状态。 - tech189.Bat 扩展名是命令提示符可执行格式。 它不支持新的 Windows 终端,我已经检查过了。
幸运的是,这是错误的,我找到了一种方法将新的 Windows 终端设置为默认:
只需创建一个 .reg 文件,并使用以下代码(将 "Marco" 替换为您的用户名)运行它:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\batfile\shell\open\command]
@="\"C:\\Users\\Marco\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe\" \"%1\""
您还需要编辑 Windows 终端的 settings.json 文件,并将默认设置更改为:
"startingDirectory": "%USERPROFILE%"
to
"startingDirectory": "."
如果您不这样做,它将无法工作,因为它尝试在用户文件夹而不是当前文件夹中运行它!
根据tech189的说法,
其他回答也可以解决问题,但我希望批处理文件在Windows终端已经打开的情况下以新标签页的形式打开,并且允许使用没有绝对路径的脚本。
而且,如果“命令提示符”不是Windows终端的默认配置文件,则我希望.bat文件在Windows终端中使用“命令提示符”配置文件来打开。
因此,结合Christos Lytras和tech189的解决方案,我找到了适合我的解决方案:
打开注册表编辑器并导航到以下键:
计算机\HKEY_CLASSES_ROOT\batfile\shell\open\command
然后将
(Default)
值修改为以下内容:
wt.exe -w 0 new-tab -d . -p "Command Prompt" "%1" %*
wt -p "Command Prompt" {pathtoyourbatchfile1} ; nt {pathtoyourbatchfile2}
对于最佳方法,如果我们需要将系统环境添加到路径中,则需要将 REG_TYPE 从 REG_SZ 更改为 REG_EXPAND_SZ,否则我们只能使用绝对路径
%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe -w 0 nt -d . "%1" %*
路径位于 HKEY_CLASSES_ROOT\batfile\shell\open\command
下方如下:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\batfile\shell\open\command]
@=hex(2):25,00,4c,00,4f,00,43,00,41,00,4c,00,41,00,50,00,50,00,44,00,41,\
00,54,00,41,00,25,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,\
74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,41,00,70,00,70,00,73,\
00,5c,00,77,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,77,00,20,00,30,00,\
20,00,6e,00,74,00,20,00,2d,00,64,00,20,00,2e,00,20,00,22,00,25,00,31,00,22,\
00,20,00,25,00,2a,00,00,00
与(Windows 终端)团队沟通的最简单方法是通过 GitHub 问题。
- user6811411start
命令。 - SomethingDark