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

Mas*_*han 22 windows terminal cmd batch-file

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

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

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

Chr*_*ras 29

您可以通过将HKEY_CLASSES_ROOT\batfile\shell\open\command默认值更改为双击来实现此行为:

"%1" %*
Run Code Online (Sandbox Code Playgroud)

到:

"C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\wt.exe" -p "Command Prompt" "%1" %*
Run Code Online (Sandbox Code Playgroud)

或使用ftype命令:

ftype batfile="C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\wt.exe" -p "Command Prompt" "%1" %*
Run Code Online (Sandbox Code Playgroud)

您必须更改<user>当前用户名目录,当然,此wt.exe路径 ( C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\) 是如果您已从Microsoft Store安装Windows Terminal,如果还没有,那么您必须找到并使用该路径。的Windows环境变量和,没有工作的我,所以我在这里使用完整路径。wt.exe%LOCALAPPDATA%%USERPROFILE%

您可以创建一个注册表项来选择BAT使用 Windows 终端来运行文件并使其运行CMD

  1. 打开regedit并导航到HKEY_CLASSES_ROOT\batfile\shell键。
  2. 创建一个具有名称wtopen和默认值的键Open with Windows Terminal

RegEdit batfile shell 命令

  1. 创建一个HKEY_CLASSES_ROOT\batfile\shell\wtopen\command具有默认值的子项:
    "C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\wt.exe" -p "Command Prompt" "%1" %*
    
    Run Code Online (Sandbox Code Playgroud)

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

Windows 资源管理器 BAT 文件右键单击

使用 Windows 终端 0.11.1121.0 测试

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


tec*_*189 16

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

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

Computer\HKEY_CLASSES_ROOT\batfile\shell\open\command
Run Code Online (Sandbox Code Playgroud)

然后将(Default)值修改为以下内容:

wt.exe -w 0 new-tab -d . "%1" %*
Run Code Online (Sandbox Code Playgroud)

其中参数指定在文件当前工作目录-w 0中的第一个或现有窗口中打开:new-tab-d .

提示:如果您将批处理文件设置为在后台静默运行,并且不想弹出该文件,只需将其重命名为.bat即可.cmd


Are*_*323 8

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

.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\""
Run Code Online (Sandbox Code Playgroud)

您还需要编辑 windows 终端 settings.json 并更改默认值:

"startingDirectory": "%USERPROFILE%"
Run Code Online (Sandbox Code Playgroud)

"startingDirectory": "."
Run Code Online (Sandbox Code Playgroud)

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

  • 工作起来就像一个魅力,尽管我必须将起始目录部分放在 settings.json 的命令提示符配置文件部分下才能更改其目录。 (3认同)

All*_*lie 6

今天我发现以下命令可以工作(无需更改注册表):

wt -p "Command Prompt" {pathtoyourbatchfile1} ; nt {pathtoyourbatchfile2}
Run Code Online (Sandbox Code Playgroud)

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


小智 6

正如 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" %*
Run Code Online (Sandbox Code Playgroud)