在Windows上将输出突出显示或下划线化到标准输出

4

背景

我需要将一个 Perl 脚本从 Linux 移植到 Windows。该脚本输出到标准输出并高亮和下划线特定的单词。在 Linux 中,可以通过使用系统调用 tput 来实现:

tput smsotput rmso 用于高亮

tput smultput rmul 用于下划线

问题

在 Windows 上是否有任何系统调用可以轻松实现此功能?如果没有,是否有人知道可以实现类似结果的解决方法?


Write-Host命令具有-BackgroundColor和-ForegroundColor参数,可用于突出显示。 - Cobster
1个回答

6
如果您正在使用Perl输出内容,至少在Windows 10及以上版本中,Win32::Console可以在Windows上设置下划线。
my $win32_console Win32::Console->new();

        # Rendering is flakey under Windows 10
my $attr =  0x8000 # COMMON_LVB_UNDERSCORE, Windows 10 onwards
          | 0x4000 # COMMON_LVB_REVERSE_VIDEO, Windows 10 onwards
          ;
$console->Attr($attr);
$console->Write("Hello World");

如果只是需要一个非常快速的移植修复方案,Win32::Console::ANSI会“神奇地”将输出中的所有ANSI序列转换为适当的控制台调用。


谢谢!Win32::Console::ANSI正是我所寻找的。 - robasia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接