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

[文本处理] 【已解决】批处理中退格符的作用是什么?

看看随风大大关于“shift 命令详解”的教程,大致了解了shift命令。只是里面有几行代码,想破脑袋也没弄明白
http://bbs.bathome.net/viewthread.php?tid=107&highlight=shift%2B%C3%FC%C1%EE%CF%EA%BD%E2
  1.   
  2. set num=
  3. set num=%num%
  4.   .
  5.   .
  6.   .
  7. set /p=%num%<nul
  8.   
复制代码
看看后面的zqz0012005大大说法
  1. 确切地说,一个退格符是将光标往前移动一位,接着出现的字符会将原来的字符覆盖。
复制代码
有了个模糊的印象。

可是还是弄不明白,之后我把两个set命令删掉了,就出现了附件上面得现象(大小有限定,图就截小了,画面上显示的颜色是最后一步的)

  想仔细听下那两行代码的详细命令???希望大大们帮助!
[attach]1542[/attach]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

那两个set命令就是把一定数量的退格符赋值给变量num
它的作用就是删除每次执行:lis循环时产生的回显结果
你把它们删掉自然会出现截图中的结果
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

退格符数量

哦,那退格符的数量有限制吗,或是随便输入,还是根据下文要出现的字符来输入?!
   第二个nun=%num%退格符  有什么用,上面不是已经赋值了吗?!

TOP

回复 3楼 的帖子

你可以自己试试把两个set命令中的退格符合并到一个set命令里面
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我不认为这样赋值是好的,完全可以用下面这种方式来赋值:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (1,1,26) do set "str=!str!"
  3. echo 下面的字母在3秒后会变成大写字母
  4. set /p=abcdefghijklmnopqrstuvwxyz<nul
  5. ping /n 4 127.1>nul
  6. set /p=%str%<nul&set /p=ABCDEFGHIJKLMNOPQRSTUVWXYZ<nul
  7. pause>nul
复制代码
***共同提高***

TOP

体会

哦,明白了,正如四楼大大说的,
  1. 那两个set命令就是把一定数量的退格符赋值给变量num
  2. 它的作用就是删除每次执行:lis循环时产生的回显结果
  3.    
复制代码
删掉的话,就会出现在图片就结果。如果把两个set和在一起效果也一样,我猜测可能是一则是代码整齐、二则退格符聚在一起眼花吧
  五楼大大的 "str=!str!"  是什么意思?!  我只知道的是 set 设置变量str,便把!str!赋值给给str,那个退格符 是不是一次“清洗”  abcdefghijklmnopqrstuvwxyz ? 课只有一个退格符啊,怎么一起都“清洗”了
  还有个问题
  1.   call :lis 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
  2.   color 0b
  3.   echo\&echo 测试完毕,按任意键退出 ……
  4.   echo\&pause>nul&exit
  5.   :lis
  6.   set /p=%num%<nul
  7.   if "%5"=="" goto :eof
  8.   shift /5
  9.   set /p=移位后的参数为 : %1 %2 %3 %4 %5 %6 %7 %8 %9<nul
  10.   set /p=     按任意键继续......<nul
  11.   pause>nul
  12.   goto lis
  13.   
复制代码
还是上面的例子 call与goto,  if "%5"=="" goto :eof 意思是如果第五个参数为空的话就跳到末尾,可是最后末尾不是:lis么 ,怎么执行的时候是跳到color,这时可能是call作怪,call执行完后还会回来再执行一次,于是就出现了最后显示有颜色的代码。 那么这两个代码是不是有矛盾???

  之后我把goto:eof去掉,屏幕就一闪而过;不去掉goto:eof,在前面加上::  程序继续执行,只是最后停在
  1. 没有移位后的参数为 : 01 02 03 04          按任意键继续................
复制代码
怎么理解这连个代码在此段的意思???

[ 本帖最后由 xushaolong2009 于 2009-4-14 22:55 编辑 ]

TOP

回复 6楼 的帖子

eof 是 end of line 的缩写
goto :eof 就是跳转到最后一行代码的下一行(什么都没有)
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

恢复7楼大大的

哦,明白了!谢谢!!!

TOP

返回列表