欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用新版 Windows Terminal 打开批处理脚本的方法

程序员文章站 2022-03-05 07:52:41
...

除了配置有点麻烦,其它都超级好的Terminal
Windows 终端是一个面向命令行工具和 shell(如命令提示符、PowerShell 和适用于 Linux 的 Windows 子系统 (WSL))用户的新式终端应用程序。 它的主要功能包括多个选项卡、窗格、Unicode 和 UTF-8 字符支持、GPU 加速文本呈现引擎,还可以用于创建你自己的主题并自定义文本、颜色、背景和快捷键绑定。Windows Terminal 概述

为什么用到批处理脚本

有的软件需要设置环境变量,比如 Visual Studio 的命令行工具,当然,给 Windows Terminal 添加一个配置,commandline 填写:

"commandline": "%comspec% /k \"C://Program Files (x86)//Microsoft Visual Studio//2019//Community//VC//Auxiliary//Build//vcvars64.bat\""

就可以打开支持 cl.exe 的命令行了。

实际面临的情况可能更复杂,例如同时安装了多个版本的 ModelSim、QuestaSim,还有 Active HDL,这些软件的命令是冲突的(e.g. 都有 vsim 命令),同时还安装了多个版本的 Vivado。

这时候就需要写一个脚本,通过 set /p 获取简单的选项输入,就可以配置好相应的环境,在脚本最后执行 cmd /k,这样就得的一个设定好相应的环境变量的命令提示符窗口了。

如何使用新版 Windows Terminal 打开批处理文件

那么如何使用新的 Windows Terminal 打开批处理脚本呢?我看网上有很多博客说去改注册表。我对此不赞同。wt 是一个新项目,虽然现在 Microsoft Store 上早已上线正式版,但是它还会有不少BUG,武断地通过改注册表用 wt 完全替换 cmd 不太靠谱。

我想到的办法是在批处理脚本的开头调用 wt。举个例子:

@echo off
if not defined TAG (
    set TAG=1
    start wt -p "cmd" %0
    :: Windows Terminal 中 cmd 的配置名,我这里是“cmd”
    exit
)

chcp 65001
:: 用 vscode 写的,默认编码是 utf-8
cd %userprofile%/desktop
echo 这是正文
dir
pause

这样做基于两个现实:

  1. %0 指代脚本本身
  2. CMD 设置的环境变量会通过 start 命令传递

这样会有一个 CMD 窗口闪现一下,然后 wt.exe 开始执行后面的脚本。想要用新版的Windows 终端运行脚本,在这个脚本前添加这样简单的 if 语句就可以了。

有哪些需要改进的地方

需要改进的地方:

  1. 首先就是闪现一下的 CMD 窗口。但是我觉得无伤大雅啦。
  2. 最好是像用浏览器打开HTML文件那般,如果存在窗口,就在新标签打开。这个特性目前是没有办法实现的,但是 wt 将在未来支持这一特性,我在 Github 上已经看到 有 spec 在设计这一功能了(Commandline Arguments for the Windows Terminal