如何让批处理文件通过新的 Windows 终端运行? [关闭]

Posted

技术标签:

【中文标题】如何让批处理文件通过新的 Windows 终端运行? [关闭]【英文标题】:How can I get batch files to run through the new Windows Terminal? [closed] 【发布时间】:2019-10-05 01:54:36 【问题描述】:

由于一次运行多个批处理文件,我往往会同时打开许多 cmd 提示符,因此我认为新的 Windows 终端将是一种使用选项卡整理内容的好方法。

问题是,我不太清楚如何将通过 cmd 实例运行批处理文件的默认行为更改为通过 Windows 终端实例内部的 cmd 实例运行所需的批处理文件。

我可以轻松地打开 Windows 终端,启动一个 cmd 实例,cd 到正确的目录,然后运行批处理文件……但这需要付出很多努力。我只想能够运行一个批处理文件,并让它通过 Windows 终端内的 cmd 提示符运行。

【问题讨论】:

此功能可能尚不可用,我敦促您寻找当前的开发人员并询问它是否可用,如果不可用,您可以为他们记录一个增强问题确保新软件的可用性进一步提高! 引用github.com/microsoft/terminalThe easiest way to communicate with the (windows terminal) team is via GitHub issues. 不确定我是否正确,我的英语知识很少,但是这个链接有帮助吗? dostips.com/forum/viewtopic.php?f=3&t=9136 @elzooilogico - 该链接只是两个人在讨论终端,没有讨论如何使用它。 我还没有进行更改来测试它,但我想您要么更改与 .bat 扩展名关联的可执行文件,要么使用start 【参考方案1】:

您可以通过将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" %*

您必须将&lt;user&gt; 更改为当前用户名目录,当然,如果您从Microsoft 安装Windows Terminal,则此wt.exe 路径(C:\Users\&lt;user&gt;\AppData\Local\Microsoft\WindowsApps\) 是存储,如果你没有,那么你必须找到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 文件时,您将有一个新条目“使用 Windows 终端打开”,当您单击它时,它将打开一个新的 Windows 终端 带有运行所选批处理文件的 命令提示符 面板:

使用 Windows 终端 0.11.1121.0 测试

命令提示符 (cmd) 配置文件的默认名称是“命令提示符”。如果您的名称不是默认名称,则必须使用 -p "&lt;name&gt;" 参数更改它。

【讨论】:

更一般:"%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe" 未尝试,但应该可以使用ftype batfile="%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe" %1 %*从命令提示符更改默认值 @Stephan 我试过%LOCALAPPDATA%%USERPROFILE%\AppData\... 但这些都不起作用,但ftype 是一种更快的设置方法,是的。 这可行,但问题是询问是否有一种方法可以在默认情况下通过双击而不是右键单击选项在 Windows 终端中打开 bat 文件 @NekoMusume 是的,我在回答的开头提到了这一点;更改 HKCR\batfile\shell\open\command 对您不起作用? 不幸的是,我没有,只有右键有效【参考方案2】:

其他答案有效,但如果 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

【讨论】:

有没有办法在bat文件完成后保持标签/窗口打开? 只需使用命令pause 在批处理文件的末尾添加一个新行。当它到达该点时,它将停止并提示您按任意键退出,并保持打开状态,直到您这样做。【参考方案3】:

我一直在寻找这个至少一年,今天我终于找到了一个解决方案.. 在Microsoft Forum 一位顾问说:

.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%"

"startingDirectory": "."

如果您不这样做,它将无法工作,因为它会尝试在用户文件夹中而不是在当前文件夹中运行它!

【讨论】:

工作就像一个魅力,虽然我不得不将起始目录部分放在 settings.json 的命令提示配置文件部分下,以便它更改其目录。 @Mathew Vandenberg 此评论应该是答案的一部分【参考方案4】:

正如tech189所说,

其他答案有效,但如果 Windows 终端已经打开并允许没有绝对路径的脚本,我也希望批处理文件作为新选项卡打开

如果“命令提示符”不是 Windows 终端中的默认配置文件,我希望 .bat 文件使用 Windows 终端中的“命令提示符”配置文件打开。

因此,使用 Christos Lytras 和 tech189 的解决方案,我找到了适合我的解决方案:

打开注册表编辑器并导航到此键:

Computer\HKEY_CLASSES_ROOT\batfile\shell\open\command

然后将(Default)的值修改为如下:

wt.exe -w 0 new-tab -d . -p "Command Prompt" "%1" %*

【讨论】:

【参考方案5】:

今天发现以下命令有效(无需更改注册表):

wt -p "Command Prompt" pathtoyourbatchfile1 ; nt pathtoyourbatchfile2

上面的命令会打开 2 个带有指定批处理文件的选项卡。 “nt”部分定义了额外的选项卡,因此您可以重复它来初始化多个选项卡。

【讨论】:

非常感谢。让我带你出去吃饭【参考方案6】:

将得到https://github.com/microsoft/terminal/issues/492的支持

Windows 未来将支持更改默认终端。

【讨论】:

【参考方案7】:

为了最好的方法,如果我们需要在路径中添加系统环境,我们需要将 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

【讨论】:

【参考方案8】:

./batchfile 为我工作。从 penguinOS 中取出一页

【讨论】:

以上是关于如何让批处理文件通过新的 Windows 终端运行? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

multiprocessor(中)

如何让VBS文件 自动开机就运行

双击时如何使Windows批处理文件暂停?

如何利用批处理命令让两个WINDOWS程序按照顺序运行?

让windows决定如何打开/运行文件?

如何通过批处理文件打开 Windows 防火墙上的端口