Board logo

标题: [文本处理] ansicon 让命令行支持彩显等功能 [打印本页]

作者: CrLf    时间: 2015-10-31 14:46     标题: ansicon 让命令行支持彩显等功能

本帖最后由 CrLf 于 2015-10-31 16:06 编辑

32位或64位环境也都能支持 ansi 代码了

ansi 代码相关知识参考:http://baike.baidu.com/link?url= ... x5mSDdKlOGwIvWnHHrq
其中包含窗口、光标、前景背景色等功能

ANSICON by Jason Hood <jadoxa@yahoo.com.au>.
Version 1.66 (21 September, 2013).  Freeware.
http://ansicon.adoxa.vze.com/

Process ANSI escape sequences in Windows console programs.

ansicon [-l<level>] [-i] [-I] [-u] [-U] [-m[<attr>]] [-p]
        [-e|E string | -t|T [file(s)] | program [args]]

  -l                set the logging level (1=process, 2=module, 3=function,
                     +4=output, +8=append) for program (-p is unaffected)
  -i                install - add ANSICON to the AutoRun entry (also implies -p)
  -u                uninstall - remove ANSICON from the AutoRun entry
  -I -U                use local machine instead of current user
  -m                use grey on black ("monochrome") or <attr> as default color
  -p                hook into the parent process
  -e                echo string
  -E                echo string, don't append newline
  -t                display files ("-" for stdin), combined as a single stream
  -T                display files, name first, blank line before and after
  program        run the specified program
  nothing        run a new command processor, or display stdin if redirected

<attr> is one or two hexadecimal digits; please use "COLOR /?" for details.
It may start with '-' to reverse foreground and background (but not for -p).


简单说常用的用法有:
  1. dir | grep --color=always -P \S+\.txt | ansicon
  2. ::从管道或重定向获取输入,并转义其中的 ansi 代码,此例为彩色显示
  3. ::该用法对中文的兼容性最好
复制代码
  1. dir | ansicon grep --color=always -P \S+\.txt
  2. ::和上一个例子效果基本一样的,但对中文的兼容性不佳
复制代码
  1. ansicon -i
  2. ::安装 ansicon,以后运行 cmd 时自动加载 ansicon
  3. ::还有个对应的 -u 开关可以反安装
复制代码
  1. ansicon -p
  2. ::注入到父进程中,使父进程支持 ansi 代码
复制代码
实测 -e 选项似乎有 bug,不建议使用该开关

如果没有用到注入功能,可以不需要 ansi.dll
作者: CrLf    时间: 2015-10-31 15:00

中文兼容性的问题已向作者反馈,但 xxxx | ansicon 的时候是没问题的,目前建议先使用这个写法
作者: tmplinshi    时间: 2015-10-31 15:31

> grep --color=always \S+\.txt
grep: (standard input): Not enough space

这是为什么?grep 从这个地址下载的 http://batch-cn.qiniudn.com/tool/2.21/grep.exe

WIN7 X64 系统
作者: CrLf    时间: 2015-10-31 15:49

本帖最后由 CrLf 于 2015-10-31 15:54 编辑

回复 3# tmplinshi


    未指定 stdin 输入,突然发现例子写错了,应该是
  1. dir | grep --color=always -P \S+\.txt | more
复制代码

作者: 依山居    时间: 2015-10-31 21:59

回复 4# CrLf


    gt 下载不了,这打包规则不合理。
作者: CrLf    时间: 2015-10-31 22:35

回复 5# 依山居


因为 Batch-CN 在下载多版本的工具时需要注明版本号和后缀名:
  1. gt 1.66/ansicon.rar
复制代码
期待新版会有所改进
作者: tmplinshi    时间: 2015-11-1 00:25

本帖最后由 tmplinshi 于 2015-11-1 00:28 编辑

原来装了 CMDRead 之后直接支持彩色显示了。


作者: CrLf    时间: 2015-11-1 01:19

本帖最后由 CrLf 于 2015-11-1 02:07 编辑

回复 7# tmplinshi


    实测 CMDRead 对输入输出无影响,兄台图中的红字估计是 ansicon 的效果
    倒是发现这个是 32/64 合一的,顺便一搜又发现了 clink,快捷键相当强大,还能加载 lua 扩展脚本
http://www.bathome.net/s/tool/?key=clink
作者: bailong360    时间: 2015-11-1 10:31

本帖最后由 bailong360 于 2015-11-1 10:32 编辑

回复 6# CrLf
回复 5# 依山居

这个问题已经改进过了
但是新版gt默认是从本地list中读取,而本地不一定是最新,所以就那个了...
先键入不带参数的gt更新一次列表后就可以不带版本号直接下载了

不过这也是个bug,得捉
作者: CrLf    时间: 2015-11-1 15:40

回复 9# bailong360


其实可以根据时间间隔判断是否更新列表,比如离上次下载时不是同一分钟就更新列表,但考虑到时间格式的问题,还需要作兼容设计:
文件修改时间刚好是精确到分钟的,所以可以下载时先创建一个空的临时文件,比较该文件与 tool.txt 的 %%~ti,不相同则更新 tool.txt
作者: netbenton    时间: 2019-12-19 00:21

回复 8# CrLf


     clink 怎么用法?没有说明呢?




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2