标题: [文本处理] 【已解决】批处理中退格符的作用是什么? [打印本页]
作者: xushaolong2009 时间: 2009-4-14 13:57 标题: 【已解决】批处理中退格符的作用是什么?
看看随风大大关于“shift 命令详解”的教程,大致了解了shift命令。只是里面有几行代码,想破脑袋也没弄明白
http://bbs.bathome.net/viewthread.php?tid=107&highlight=shift%2B%C3%FC%C1%EE%CF%EA%BD%E2-
- set num=
- set num=%num%
- .
- .
- .
- set /p=%num%<nul
-
-
复制代码
看看后面的zqz0012005大大说法-
- 确切地说,一个退格符是将光标往前移动一位,接着出现的字符会将原来的字符覆盖。
复制代码
有了个模糊的印象。
可是还是弄不明白,之后我把两个set命令删掉了,就出现了附件上面得现象(大小有限定,图就截小了,画面上显示的颜色是最后一步的)
想仔细听下那两行代码的详细命令???希望大大们帮助!
[attach]1542[/attach]
作者: Batcher 时间: 2009-4-14 16:08
那两个set命令就是把一定数量的退格符赋值给变量num
它的作用就是删除每次执行:lis循环时产生的回显结果
你把它们删掉自然会出现截图中的结果
作者: xushaolong2009 时间: 2009-4-14 16:13 标题: 退格符数量
哦,那退格符的数量有限制吗,或是随便输入,还是根据下文要出现的字符来输入?!
第二个nun=%num%退格符 有什么用,上面不是已经赋值了吗?!
作者: Batcher 时间: 2009-4-14 17:19 标题: 回复 3楼 的帖子
你可以自己试试把两个set命令中的退格符合并到一个set命令里面
作者: batman 时间: 2009-4-14 20:20
我不认为这样赋值是好的,完全可以用下面这种方式来赋值:- @echo off&setlocal enabledelayedexpansion
- for /l %%a in (1,1,26) do set "str=!str!"
- echo 下面的字母在3秒后会变成大写字母
- set /p=abcdefghijklmnopqrstuvwxyz<nul
- ping /n 4 127.1>nul
- set /p=%str%<nul&set /p=ABCDEFGHIJKLMNOPQRSTUVWXYZ<nul
- pause>nul
复制代码
作者: xushaolong2009 时间: 2009-4-14 22:07 标题: 体会
哦,明白了,正如四楼大大说的,- 那两个set命令就是把一定数量的退格符赋值给变量num
- 它的作用就是删除每次执行:lis循环时产生的回显结果
-
复制代码
删掉的话,就会出现在图片就结果。如果把两个set和在一起效果也一样,我猜测可能是一则是代码整齐、二则退格符聚在一起眼花吧
五楼大大的 "str=!str!" 是什么意思?! 我只知道的是 set 设置变量str,便把!str!赋值给给str,那个退格符 是不是一次“清洗” abcdefghijklmnopqrstuvwxyz ? 课只有一个退格符啊,怎么一起都“清洗”了
还有个问题
- call :lis 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
- color 0b
- echo\&echo 测试完毕,按任意键退出 ……
- echo\&pause>nul&exit
- :lis
- set /p=%num%<nul
- if "%5"=="" goto :eof
- shift /5
- set /p=移位后的参数为 : %1 %2 %3 %4 %5 %6 %7 %8 %9<nul
- set /p= 按任意键继续......<nul
- pause>nul
- goto lis
-
复制代码
还是上面的例子 call与goto, if "%5"=="" goto :eof 意思是如果第五个参数为空的话就跳到末尾,可是最后末尾不是:lis么 ,怎么执行的时候是跳到color,这时可能是call作怪,call执行完后还会回来再执行一次,于是就出现了最后显示有颜色的代码。 那么这两个代码是不是有矛盾???
之后我把goto:eof去掉,屏幕就一闪而过;不去掉goto:eof,在前面加上:: 程序继续执行,只是最后停在- 没有移位后的参数为 : 01 02 03 04 按任意键继续................
复制代码
怎么理解这连个代码在此段的意思???
[ 本帖最后由 xushaolong2009 于 2009-4-14 22:55 编辑 ]
作者: Batcher 时间: 2009-4-14 23:07 标题: 回复 6楼 的帖子
eof 是 end of line 的缩写
goto :eof 就是跳转到最后一行代码的下一行(什么都没有)
作者: xushaolong2009 时间: 2009-4-15 12:14 标题: 恢复7楼大大的
哦,明白了!谢谢!!!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |