[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

dos里面居然可以有遮罩---妙

  1. @echo off
  2. echo  ---认识退格键  ""
  3. echo     中国人民解放军WS
  4. echo     中国人民解放军WS
  5. echo     中国人民解放军WS
  6. echo     中国人民解放军WS
  7. echo     中国人民解放军WS
  8. echo     中国人民解放军WS
  9. echo     中国人民解放军WS
  10. echo     中国人民解放军WS
  11. echo     中国人民解放军WS
  12. echo     中国人民解放军WS
  13. echo     中国人民解放军WS
  14. echo ---退格符就是一辆车走的路程,原有的字符就是一条路,
  15. echo     退格符后面的字符就是车,车过了,路还是路。
  16. echo     有的高手把退格符叫---挖土机,形象吧。
  17. echo ********************************
  18. echo ---动画演示退格符-■---
  19. echo *********************************
  20. for /l %%j in (1 1 100) do (call echo %time%>nul)
  21. color 0c
  22. set bs=
  23. for /l %%i in (1 1 10) do (
  24.     for /l %%j in (1 1 200) do (call echo %time%>nul)
  25.     call set bb=%%bs:~%%i%%
  26.     call set tt= 中国人民解放军万岁%%bb%%■人民英雄永锤不朽
  27.     call echo %%tt%%
  28. )
  29. echo 多象flash的遮罩,不过遮罩是遮住的显示,没遮住的不显示,
  30. echo  这里刚好与flash的遮罩功能相反
复制代码
  1. @echo off
  2. echo ----退格符应用动画---逐渐显示小方块
  3. color 0c
  4. set bs=
  5. for /l %%i in (1 1 120) do (
  6.   set bs=■%bs%■
  7.   for /l %%1 in (1 1 100) do (call echo %time%>nul)
  8.   call set /p=%%bs%%<nul
  9. )
  10. echo --------------
  11. set bs=
  12. for /l %%i in (1 1 200) do (
  13.   set bs=%bs%■
  14.   for /l %%1 in (1 1 100) do (call echo %time%>nul)
  15.   call set /p=%%bs%%<nul
  16. )
复制代码
上述两段程序只有一字之差,确显示出完全不同的效果。“set bs=■%bs%■ 和set bs=%bs%■”
  1. @echo off
  2. color 0c
  3. set bs=
  4. for /l %%i in (1 1 10) do (
  5.   set bs=%bs%■
  6.   for /l %%1 in (1 1 100) do (call echo %time%>nul)
  7.   call echo %%bs%%
  8. )
复制代码
程序分析:一切都是nul再作怪。把前面的程序最后一句改成这样:call echo %%bs%%,将得到靠左面的一列
小方块。因为迭代变量是 “bs=方块 退格 方块”,退格后bs的值就只能是 永远是一个方块。


----------------两个迭代变量------------------------------
tt=%tt%123   --------结果是:123,123123,123123123.。。。。。。
tt=%tt%123 --------123,12123,1212123,121212123......
--------------两个迭代显示--------------------------------
echo  %tt%123
set/p=%tt%123<nul  
----------------------------迭代当然离不开循环了。

-------------------------------------如何在左面插入空格
  1. @echo off
  2. echo 在■ 的左面插入10个空格
  3. cls
  4. setlocal enabledelayedexpansion
  5. color 0c
  6. for /l %%i in (1 1 10) do (
  7. set tt=0!tt!
  8. )
  9. set tt=%tt%■
  10. set tt=%tt:0= %
  11. echo !tt!
复制代码
其实插入空格最好的办法是利用set变量
set space=     ----这样是不行的
set space=“ ” 这样还是不行的
要这样:
set "space=   "
要10个空格就循环吧
  1. for /l %%1 in (1 1 10) do (call set "space= %%space%%")
复制代码
  1. @echo off
  2. echo ---匀速向左运动,显示2个整行
  3. set tt=
  4. color 1d
  5. for /l %%i in (1 1 78) do (
  6.   for /l %%1 in (1 1 100) do (call echo %time%>nul)
  7.   set tt=■■
  8.   call set/p=%%tt%%<nul
  9. )
  10. echo.
  11. echo ---匀速向左运动,显示2个整行 英文
  12. set tt=
  13. color 1d
  14. set tt=
  15. for /l %%i in (1 1 158) do (
  16.   for /l %%1 in (1 1 50) do (call echo %time%>nul)
  17.   set tt=AA
  18.   call set/p=%%tt%%<nul
  19. )
  20. echo.  
  21. echo ---匀速向左运动,显示2个整行 中英文混合
  22. set tt=
  23. color 1d
  24. set tt=
  25. for /l %%i in (1 1 156) do (
  26.   for /l %%1 in (1 1 50) do (call echo %time%>nul)
  27.   set tt=A■
  28.   call set/p=%%tt%%<nul
  29. )
  30. echo.  
复制代码
  1. @echo off
  2. echo ---迷失的A
  3. set tt=
  4. color 1d
  5. set tt=
  6. for /l %%i in (1 1 115) do (
  7. for /l %%1 in (1 1 50) do (call echo %time%>nul)
  8. set tt=■A
  9. call set/p=%%tt%%<NUL
  10. )
  11. echo.
  12. echo ----
  13. set tt=
  14. color 1d
  15. set tt=
  16. for /l %%i in (1 1 120) do (
  17. for /l %%1 in (1 1 50) do (call echo %time%>nul)
  18. set tt=■A
  19. call set/p=%%tt%%<NUL
  20. )
复制代码
这的放法是个细节,要想成为整行,就在这里下功夫。循环终值=(40-1)*行数,英文 循环终值=(80-1)*行数
混合 循环终值=(80-2)*行数 迷失的A例外--循环终值=40*行数 或 循环终值=40*行数-1(显示A)
  1. @echo off
  2. echo ---居中显示
  3. color 1d
  4. set tt=
  5. set ss=
  6. for /l %%i in (1 1 16) do (
  7.   call set ss=%%ss%%0
  8. )
  9. call set ss=%%ss:0= %%
  10. call set /p=%%ss%%<nul
  11. for /l %%i in (1 1 21) do (
  12.   for /l %%1 in (1 1 50) do (call echo %time%>nul)
  13.   call set tt=■■
  14.   call set /p=%%tt%%<nul
  15. )
  16. echo.
复制代码
  1. @echo off
  2. echo ---退格符完成简易向右运动
  3. cls
  4. echo.&echo.&echo.
  5. color 1d
  6. set tt=
  7. set ss=
  8. set bs=
  9. for /l %%i in (1 1 78) do (
  10.   call set ss=%%ss%%0
  11. )
  12. set ss=%ss:0= %
  13. set /p=%ss%<nul
  14. for /l %%i in (1 1 15) do (
  15.   for /l %%1 in (1 1 100) do (call echo %time%>nul)
  16.   call set  bs=%%bs%%
  17.   call set tt=%%bs%%■
  18.   call set /p=%%tt%%<nul
  19. )
  20. echo.
  21. echo   原理是利用78个空格基本铺满第一行,给小方块留下2byte的位置,
  22. echo   利用退格符相当于是它后面字符走的路程的原里,让退格符逐渐增加,即字符的路程加大
  23. echo  这样就实现了反方向运动,为了好记忆我自己把退格符的这种性质叫退格符的--------
  24. echo  路程原理  ,如果退格符后面没字符,这个路程也就不起作用了
复制代码

[ 本帖最后由 myzwd 于 2009-3-9 16:19 编辑 ]

TOP

回复 6楼 的帖子

谢谢 我按你的方法成功了。非常谢谢。

TOP

call控制时间做动画,比较好

  1. @echo off
  2. rem call 运行比for慢,控制时间 动画
  3. color 0c
  4. for /l %%1 in (1 1 5) do (
  5. for /l %%2 in (1 1 100) do (call echo %time%>nul )
  6. call set tt= ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■  
  7. call echo %%tt%%
  8. )
  9. for /l %%1 in (1 1 5) do (
  10. for /l %%2 in (1 1 100) do (call echo %time%>nul )
  11. call set tt= ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■  
  12. call set tt=  %%tt:~2%%
  13. echo.
  14. call echo %%tt%%
  15. )
  16. for /l %%1 in (1 1 5) do (
  17. for /l %%2 in (1 1 100) do (call echo %time%>nul )
  18. call set tt= ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■  
  19. call set tt=      %%tt:~7%%
  20. echo.
  21. call echo %%tt%%
  22. )
复制代码
call比for慢 这个特性刚好可以做动画的时间控制
  1. @echo off
  2. color 0c
  3. echo  ---call和ping控制时间的动画效果对比
  4. echo ----ping
  5. for /l %%i in (1 1 5) do (
  6.   set tt=■■■■■■■■■■
  7.   ping -n 2 localhost >nul
  8.   echo %tt%
  9. )
  10. echo ---call
  11. for /l %%i in (1 1 5) do (
  12.   set tt=■■■■■■■■■■
  13.   for /l %%1 in (1 1 100) do (call echo %time%>nul)
  14.   echo %tt%
  15. )
  16. echo ---显见call控制时间具有更大的自由度,特别是ping闪烁的光标要处理
复制代码

call取值100大概等于ping取2的速度

[ 本帖最后由 myzwd 于 2009-3-7 19:57 编辑 ]

TOP

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

问题:说真的我根本不知道这个符号是怎么打出来的---退格符号

edit==><ctrl>+p==>退格符
for /f "delims=" %%a in ('%0') do (echo %%a)

TOP

如何插入html代码?

  1. @echo off
  2. ::我一直在想如果用dos调用html代码,今天我算是找到方法了2007-3-6 by myzwd。
  3. call:one my.htm
  4. goto:eof
  5. :one
  6. more +9 %~s0>my.htm
  7. start %1
  8. del my.htm
  9. goto:eof
  10. <html >
  11. <head>
  12. <title>myzwd123456</title>
  13. </head>
  14. <body>
  15. <u>中国</u>
  16. <font color=red><marquee>myzwd </marquee></font>
  17. <table width="200" border="1">
  18.   <tr>
  19.     <td>myzwd</td>
  20.     <td bgcolor="#FF00FF">看</td>
  21.     <td bgcolor="#99CC00">看</td>
  22.     <td bgcolor="#9933FF">插</td>
  23.   </tr>
  24.   <tr>
  25.     <td>myzwd</td>
  26.     <td bgcolor="#FF00FF">入</td>
  27.     <td bgcolor="#99CC00">表</td>
  28.     <td bgcolor="#9933FF">格</td>
  29.   </tr>
  30.   <tr>
  31.     <td>myzwd</td>
  32.     <td bgcolor="#FF00FF">行</td>
  33.     <td bgcolor="#99CC00">不</td>
  34.     <td bgcolor="#9933FF">行</td>
  35.   </tr>
  36. </body>
  37. </html>
复制代码
  1. @echo off
  2. :<!--
  3. rem 我一直在想如果用dos调用html代码,今天我算是找到方法了2007-3-6 by myzwd。
  4. call:one my.htm
  5. goto:eof
  6. :one
  7. more +1 %~s0>my.htm
  8. start %1
  9. del my.htm
  10. goto:eof
  11. -->
  12. <html >
  13. <font color=red><marquee>myzwd </marquee></font>
  14. </html>
复制代码
其实可以把bat放到html的注释里面,html的注释符号是<!-- 啊啊啊啊-->,dos 的标准注释是rem,顺便指出,符号“::”人们也常拿来注释,但是你试一下,在for里面用会报错的其实"::"这种符号与 ":a 123jk" 是一回事,它应该是子程序的记号。我觉得bat里面还是要尽量用标准的写法l。反过来也可以把html代码放到bat的注释里面。
但这种做法完全是多余的。比如上面这中写法在网页上就多出一个:号。正规的网页多一个冒号也是不可以的。

还有就是html代码码很长,以我编辑网页的经验的话,乱放是很麻烦的事情。加载代码和加载js,vb脚本是一回事情,因为这只不过是在<html>...</html>间再插入代码吧了。

问题:我一直没找到 %~s1 和%~f1的差别在那里,我每次混用给我的感觉都一样,差别在那呢?
  1. @echo off
  2. echo 另类循环 骗骗你让你最后成为死循环 你运行3次试一试
  3. :one
  4. echo I LOVE YOU HOME OF BATCH
  5. set /a n+=1
  6. if %n%==20 goto end
  7. if errorlevel 10 goto one
  8. exit /b 10
  9. :end
  10. echo 循环次数%n%次
复制代码

[ 本帖最后由 myzwd 于 2009-3-12 23:10 编辑 ]

TOP

回复 3楼 的帖子

本版有很多教程,不知你看过了哪些?
高手的代码看不懂没关系,哪行不懂就发帖问哪行,自然有热心人给你解释。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

与楼主有同感!想进一步,可批处理比较全面系统的教程都不知在那里有,看高手的代码,大部分看不懂,又没有解释,批处理想提高真的比学高级语言还难!

TOP

set /p 与nul的配合

dos中常用的显示命令是echo,我看到别人用set /p来显示数据,于是就跟着学,特别是把set/p 和nul配合使用
  1. @echo off
  2. set /p=a123a <nul
  3. echo b123b
复制代码
结果会显示---a123a b123b
这相当于把前后连了起来。
  1. @echo off
  2. echo a123a111111 & dir^  
  3. d:
复制代码
这于字符连字号 ^ 的效果一样。
这个符号 ^ 是dos里面的多义词
  1. echo
  2. echo.123
复制代码
echo后面加一点 可以屏蔽错误信息。
  1. @echo off
  2. rem 3x4矩阵的转置,看了几个帖子,于是我也有了一种冲动,就编写了这个矩阵转置的程序
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=1-4" %%1 in ('more +14 %~s0') do (
  5. set tt=!tt! %%1 %%2 %%3 %%4
  6. )
  7. call:one %tt%
  8. goto:eof
  9. :one
  10. echo %1 %5 %9
  11. shift
  12. if %9.==. goto :eof
  13. goto one
  14. goto:eof
  15. 11 12 13 14
  16. 21 22 23 24
  17. 31 32 33 34
复制代码
------如何利用findstr把输入的字变为彩色的字----函数应用
  1. @echo off
  2. rem 2009-3-5---findstr让输入的字成为彩色字体的方案
  3. set tt="I LOVE HOME OF BATCH"
  4. call:one %tt%
  5. goto:eof
  6. :one
  7. set /p=    <nul>%1
  8. rem 生存类文本,无扩展名,nul让字符串提前的性质
  9. findstr /a:24 .* "%~n1?"
  10. rem 这里加载类文本 这里的%1指向call:one后的%tt%,代表文件名
  11. rem 利用findstr对于非内容的特定字符会显示彩色的特性,最后显示彩色文本
  12. del %1
  13. rem 删除生存的类文本
  14. set tt=
  15. rem 整体构思是利用了批函数 ,具有参数的要点来设置程序的
  16. echo.
  17. echo.
  18. echo ----下面是对比程序--
  19. set tt="I LOVE HOME OF BATCH"
  20. call:two %tt%
  21. goto:eof
  22. :two
  23. findstr /a:24 .* "%~n1?"
  24. set tt=
  25. rem 上面的代码可以简化如下,这样更能看出本质来
  26. @echo off
  27. call:one 我来了 你好 啊
  28. goto:eof
  29. :one
  30. set /p=>%1
  31. findstr /a:24 .* "%1*"
  32. rem %1始终指向 call:one 后面的字符常量,"%~1*"这里是生存的文件,引号很重要。
  33. rem 没有用nul 就要回车才可以看到文字 冒号可以用这个字符,退格符号删去
复制代码
  1. @echo off
  2. echo ------采用2,3,4为16进制数显示彩色字体  实验程序---
  3. findstr /n /a:12 .*   %~s0
  4. findstr /n /a:c24 .*  %~s0
  5. findstr /n /a:24 .*   %~s0
  6. findstr /n /a:120c .* %~s0
  7. echo -----退格符号,删去显示-------
  8. findstr /n /a:12 .*  %~s0
  9. findstr /n /a:c24 .*  %~s0
  10. findstr /n /a:24 .*   %~s0
  11. findstr /n /a:120c .* %~s0
  12. rem 在阴影上3位数,画格子,4位数画竖线,也就是说3位以上的数字就产生花纹。
  13. goto:eof
  14. 仗剑江湖  仗剑江湖   仗剑江湖a
  15. 仗剑江湖  仗剑江湖   仗剑江湖b
  16. 仗剑江湖  仗剑江湖   仗剑江湖c
复制代码
最后 color 与findstr可以配合使用


数学计算:findstr的阴影部分是2位hex,共能产生16*16=256种色彩,花纹部分也是2bit的hex 这也有256种。
色彩就这么多,多一种都不可能有。

下面的说明了符号 是如何产生的。
*******************************************************************
1----进入edit
2----按下 ctrl+p ,松开,要松开!这时在edit中什么都看不到
3---接着按下backspace退格键,此时就看到了这个符号
4--保存到记事本中就可以了。


==========================================================
   全屏cmd ----  修改注册表 路径:HKCU\CONSOLe\   FULLSCREEN  VALUE=1(全屏),0(非全屏)


  1. @echo off
  2. echo 让findstr只显示标签,实现输入彩色字
  3. echo.>中国足球是笑话
  4. findstr /a:0c z* 中国足球是笑话*
  5. del /q 中国足球是笑话
  6. rem cmd将显示的是---红色的--- “中国足球是笑话:”
复制代码


[ 本帖最后由 myzwd 于 2009-3-19 09:43 编辑 ]

TOP

返回列表