如何使批处理文件通过新的Windows终端运行?

时间:2019-05-17 17:55:59

标签: windows batch-file cmd terminal

一次运行多个批处理文件时,我倾向于一次打开很多cmd提示,因此我认为新的Windows Terminal将是一种使用选项卡整理内容的好方法。

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

我能够轻松地打开Windows终端,启动一个cmd实例,将cd切换到正确的目录,然后运行批处理文件..但这很费劲。我只希望能够运行一个批处理文件,并通过Windows终端中的cmd提示符使它工作。

8 个答案:

答案 0 :(得分:6)

通过将HKCR\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>,当然,如果您已安装 Windows Terminal wt.exe路径(C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\)是> Microsoft Store 中的>,则必须查找到wt.exe的路径并使用它。 Windows环境变量%LOCALAPPDATA%%USERPROFILE%对我不起作用,因此我在这里使用完整路径。

您可以创建一个注册表项,以选择使用Windows终端操作BAT文件并使其与CMD一起运行:

  1. 打开regedit并导航至HKEY_CLASSES_ROOT\batfile\shell键。
  2. 使用名称wtopen和默认值Open with Windows Terminal创建密钥:

    RegEdit batfile shell commands

  3. 使用默认值创建一个子键HKEY_CLASSES_ROOT\batfile\shell\wtopen\command
    "C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\wt.exe" -p "Command Prompt" "%1" %*
    

现在,当您右键单击BAT文件时,您将拥有一个新条目“使用Windows终端打开” ,当您单击它时,它将打开一个新的 Windows终端,其中带有运行所选批处理文件的命令提示符面板:

Windows explorer BAT file right click

通过Windows Terminal 0.11.1121.0测试

命令提示符cmd)配置文件的默认名称为“命令提示符” 。如果您使用的名称不是默认名称,则必须使用-p "<name>"参数进行更改。

答案 1 :(得分:4)

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

答案 2 :(得分: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": "."

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

答案 3 :(得分:2)

如 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" %*

答案 4 :(得分:1)

将由https://github.com/microsoft/terminal/issues/492

支持

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

wt -p "Command Prompt" {pathtoyourbatchfile1} ; nt {pathtoyourbatchfile2}

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

答案 7 :(得分:-1)

./ batchfile对我有用。从penguinOS中取出页面