批处理之家's Archiver

bailong360 发表于 2015-4-19 17:50

超高效彩显工具SYBC-增强版[2015-7-29更新]

[i=s] 本帖最后由 bailong360 于 2015-8-4 19:53 编辑 [/i]

用sybc exe版开发的时候发现了一些缺点
本来想下载源码进行修改,但是找不到源码...
遂仿制了一个
[url=http://pan.baidu.com/s/1dD5yAvn]http://pan.baidu.com/s/1dD5yAvn[/url][code]
版本:0.3
大小:3.5KB

SYBA 语法继承自SYBC

sybc教程:
http://www.bathome.net/thread-7375-1-4.html
http://www.bathome.net/thread-10337-1-1.html  

语法:
   SYBA 变量名

变量名对应的变量默认用于彩显,语法如下:
   
    控制符号:
     $[attr] 颜色设置,[attr]参考color /?
     #   使用控制台当前颜色
     ;    下一行
     ;:    坐标设置(第一个可以省略),格式为023056,023表示行,056表示列
     `    转义符
   
    例:
        @echo off
        set var=025056$F0bathome$C0.net;:027060bailong360
        syba var
        pause
        在25行56列以白色背景,黑色文字输出"bathome",再以红色背景输出".net"
        在27行60列输出"bailong360"
      
        
特殊变量(ms代表延时数):
 M [ms]  获取鼠标坐标,M中可以保存鼠标坐标,返回坐标在M中的位置
   P [ms]  获取鼠标坐标,返回坐标
 K [ms]  获取键盘事件,K中保存需要检测的字符,返回该字符在M中的位置
   C [ms]      判断指定按键是否被按下
 D [ms]  获取键盘事件,返回虚拟键码

M:
    获取鼠标事件,M中可以保存鼠标坐标
    如果保存了鼠标坐标,那么当鼠标单击在坐标规定的区域内时,程序退出并返回该区域的顺序
    如果未保存鼠标坐标,那么单击后返回坐标
   
    坐标格式:
        左上角y轴,左上角x轴-右下角y轴,右下角x轴;左上角y轴2,左上角x轴2-右下角y轴2,右下角x轴2;(等等)
      
    例:
        @echo off
        set M=1,1-3,3;1,10-2,15;
        syba M
        echo %errorlevel%
        pause
        当鼠标单击在 1,1 3,3 围成的矩形区域内时,返回1
        当鼠标单击在 1,10 2,15 围成的矩形区域内时,返回2
        其他情况下不返回
        
    如果M未定义则通过
    set /a "X = %errorlevel% >> 16,Y = %errorlevel% & 65535"
    从返回值中获取坐标
    例:
        @echo off
        :loop
        syba M
        set /a "X = %errorlevel% >> 16,Y = %errorlevel% & 65535"
        echo 行:%Y% 列:%X%
        goto loop

P:
   经典的用法,不多说

K:
    获取键盘事件,类chioce,k中保存字符,返回字符在字符串中的次序
    例:
        @echo off
        echo 请选择(1 2 3 4 5 6)
        set k=123456
        syba k
        echo 你选择的是%errorlevel%
        
C:
    判断指定按键是否被按下,C中保存虚拟键码,可以通过百度或者syba M获得
    例:
        @echo off
        setlocal enabledelayedexpansion
        set C=112;113;114;
        set List=123
        :loop
        syba C
        cls
        set /a ret=%errorlevel% - 1
        if not %ret% equ -1 echo 按键F!List:~%ret%,1!被按下
        goto loop
        
D:
    获取键盘事件,返回按下按键的虚拟键码
    例:
        @echo off
        :loop
        syba D
        cls
        echo %errorlevel%
        goto loop

[ms]
    代表倒计时,ms毫秒过后程序强制退出
    M 强制退出返回当前鼠标坐标
    K C D 强制退出返回-1
    例:
        @echo off
        :loop
        syba M 100
        set /a "X=%errorlevel% >> 16,Y = %errorlevel% & 65535"
        echo 行:%Y%  列:%X%
        goto loop
        
例:
    @echo off
    set syba=000000$03请选择(Y/N):
    set k=yYnN
    syba syba
    syba k
    echo;
    if %errorlevel% geq 2 (
     echo 你选择了N
    ) else echo 你选择了Y
    pause>nul


例(酷炫):
    @echo off
    setlocal enabledelayedexpansion
    set /a n=-5,k=1
    set color=000000
    for %%i in (1 2 3 4 5 6 7 8 9 A B C D E F) do (
     set /a n+=5
     set cols=00!n!
     if !k!==1 (
      set /a k+=1
     ) else set color=!color!;:000!cols:~-3!
     for %%j in (1 2 3 4 5 6 7 8 9 A B C D E F) do (
      set color=!color!;$%%i%%j `$%%i%%j 
     )
    )
    set Mes=000000This is SYBA~
    syba color Mes
    set/p=
[/code]用着那么多开源工具,写的东西不开源不好意思
PS C新手,代码比较臃肿...
[attach]8561[/attach]

laolong 发表于 2016-7-7 13:52

以前用过 2010年版本的,很好很强大

hnfeng 发表于 2018-12-7 11:23

[i=s] 本帖最后由 hnfeng 于 2023-11-6 13:44 编辑 [/i]

很强大好用,很棒的软件,做彩色批处理很方便

只是还有两点:
1、# 功能一直没试验成功。就是仅仅把光标定位到指定坐标(以指定或默认颜色),不用显示字符,为后面的 echo, pause, timeout ... 等输出的文字改变位置和颜色
2、把光标定位到指定坐标,把这个位置已经存在的字符(一个甚至多个字符)改变颜色

期待能升级

hnfeng 发表于 2023-11-6 14:43

[i=s] 本帖最后由 hnfeng 于 2023-11-6 14:48 编辑 [/i]

显示各颜色组合的效果:
[url=https://imgse.com/i/pilV5nO][img]https://z1.ax1x.com/2023/11/06/pilV5nO.png[/img][/url][code]@echo off&setlocal EnableDelayedExpansion&cd /d "%~dp0"&color 07
mode con lines=25 cols=80

set t=Test_Test_测试文字测试文字测试文字▁▂▃▄▅▆▇████████......

for %%b in (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) do (
  set V=000000
  for %%f in (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) do (
    set V=!V!$%%b%%f_%%b%%f_%%b%%f_%%b%%f_%%b%%f_%%b%%f_%%b%%f_%t%;
  )
  syba V
  echo;
  if %%b equ F (
    echo 当前颜色值是(%%bx),是最后一个背景色。按任意键退出...
  ) else (
    echo 当前颜色值是(%%bx)。按任意键更换下一个背景色...
  )
  pause>nul
  cls
)
[/code]

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.