batch-file – 如何在Windows 10上使用带有CSCRIPT的ANSI转义序
我正在尝试使用CSCRIPT(JScript)在
Windows 10控制台中提供的新VT100 ANSI转义序列功能.但我无法让它发挥作用.
这是一个非常简单的JScript脚本: test.js WScript.Echo('x1B[7mReversex1B[0m Normal'); WScript.stdout.WriteLine('x1B[7mReversex1B[0m Normal'); 我已经完成了许多测试,CSCRIPT输出的转义序列直接写入屏幕时无效,只有先写入文件然后再打字才能工作,或者由FOR / F和ECHOed捕获. 我有两个问题: 1)为什么直接写入控制台不能从CSCRIPT工作? 我想将文本突出显示添加到我的JREPL.BAT regular expression find/replace utility(因此是batch-file标签),但如果它需要临时文件和/或FOR / F,我将不会实现该功能.
MS documentation州
所以,只是为了测试,我写了一个简单的C程序来改变控制台模式,然后充当管道或启动另一个进程并等待(抱歉,只是测试代码). #define _WIN32_WINNT 0x0500 #include <windows.h> #include <stdio.h> #include <tchar.h> #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 int _tmain(int argc,TCHAR *argv[]){ // Console handlers DWORD dwOldMode,dwMode ; HANDLE hStdout; // Pipe read buffer int c; // Spawn process variables STARTUPINFO si; PROCESS_INFORMATION pi; // Retrieve standard output handle hStdout = GetStdHandle( STD_OUTPUT_HANDLE ); if (! GetConsoleMode( hStdout,&dwOldMode ) ) { return 1; } // Change standard output handle dwMode = dwOldMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING; if (! SetConsoleMode( hStdout,dwMode ) ){ CloseHandle( hStdout ); return 2; } if( argc < 2 ) { // If there is not an argument,read stdin / write stdout while ( EOF != (c = getchar()) ) putchar( c ); } else { // Argument is present,create a process and wait for it to end ZeroMemory( &si,sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi,sizeof(pi) ); if( !CreateProcess(NULL,argv[1],NULL,TRUE,&si,&pi )){ printf( "CreateProcess failed (%d).n",GetLastError() ); return 3; } WaitForSingleObject( pi.hProcess,INFINITE ); CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); } // Restore old console mode SetConsoleMode( hStdout,dwOldMode ); CloseHandle( hStdout ); return 0; }; 使用mingw / gcc编译为run.exe.结果是 现在,处理cscript和findstr的输出并解释转义序列. 此外,如果不是运行单独的程序,我运行cmd.exe本身 由于我没有更改find??str.exe,cscript.exe或cmd.exe中的代码,只有它们工作的环境似乎是 >既没有cscript也没有findstr配置/更改控制台缓冲区配置 不,我不知道如何从纯批次启用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows10下安装source insight 4.0
- windows-server-2008 – 如何克隆Windows 2008管理员帐户?
- windows – 用于监视App池内存使用情况的免费应用程序或脚本
- windows – 在emacs中创建别名?
- 强制还原导制SQL孤立用户的解决方法……
- .net – 访问新签名的第三方DLL会出错
- 如何在win7 x64上使用带有php(xampp)的oracle客户端11.2
- windows-10 – 使用VS2015和Windows 10的uap app左上角的两
- wix – RegistrySearch vs util:Burn中的RegistrySearch
- 批处理文件 – Windows bat文件错误