我以前写的。呵呵。
- 大家自己写代码的时候经常会出错,或看不懂别人写的代码,这个时候新手一般趋向与发求助帖或者问老手,这是正常的。但是,很多问题其实可以自己解决。
- 这里,我分享自己的经验
- 其实,这个方法也许大多数人都在使用,不过没有总结出来。
-
- 方法(一)把不懂的地方分离出来独自分析
-
- 方法(二):pause(一般先去掉开头的@echo off)
- 当自己写了一串代码,运行的时候一代而过,那个的郁闷啊!这个时候面对一串代码,我们首先分析大概在什么地方出错,这个时候pause就其作用了。
- 我们在代码不同的地方加上pause
- 然后运行,这样就容易发现错误代码的大概位置,这样就方便我们找了
-
- 方法(三):echo(一般先去掉开头的@echo off)
- 这个命令在我们看别人的代码的时候特别管用!
- 我们看老手的代码的时候,经常不懂这样语句的用法!效果。这个时候我们利用echo配合pause来观察效果。
- 下面我结合具体例子来分析下!
- 例子一:
-
- @color 0a&@set,=咬定青山不放松 立根原在破岩中 千磨万练还坚韧 任你东西南北风
- @for,%%a,in,(%,%)do,@set]=%%a&echo.&echo.&@for,/l,%%b,in,(0,1,6)do,@call,set/p= %%]:~%%b,1%%nul
- 这段代码来自bbs.bathome.net的随风版主的个性签名。(随风版主对我的帮助满大的!)
- 这个代码随风故意弄了很多非常规的东西,我们一个一个揪出来吧!
- 一
- set,=咬定青山不放松 立根原在破岩中 千磨万练还坚韧 任你东西南北风
- 我们知道set 一般后面空格在加上变量的,这里没有空格直接来个逗号。。狂晕啊
- 我们吧这句话拿出来测试(利用echo 和pause)
- sets=1 &echo %s% &pause
- set/=1&echo %/% &pause
- 看有什么不同,说明了什么呢?又学到了什么呢?
-
- 二
- @for,%%a,in,(%,%)do,@set]=%%a
-
- 这里怎么是for,%%a,
- 不是空格吗?难道for可以这样?赶快去测试下吧
- for /l %%a in (1 1 2) do echo %%a &pause
- for,/l,%%a in,(1 1 2) do echo %%a &pause
-
- 三
- @for,/l,%%b,in,(0,1,6)do,@call,set/p= %%]:~%%b,1%%nul
- 看到这句是不是晕了,哈哈
- 我们来分解他
- 这个call就是延迟变量的!不管他!
- set /p=%%]:~%%b,1%%<NUL
- 这句就是利用字符截取和变量延迟来达到足个显示字的 效果!
- 但是为什么能显示 四句诗呢?
- 不懂?
- 你把上诉代码改为
- set,=咬定青山不放松 立根原在破岩中 千磨万练还坚韧 任你东西南北风
- @for,%%a,in,(%,%)do,@set]=%%a
- echo.&echo.&@for,/l,%%b,in,(0,1,6)do,@call,set/p= %%]:~%%b,1%%nul
- 执行一下!
- 发现了吗?(提示 &的作用!!)
-
- 例子二:
- @echo off
- setlocal enabledelayedexpansion
- for /l %%a in (1 1 5) do set str=%%a
-
- for /l %%i in (1 1 5) do set str1=!str1!%%i
- echo %str%
- echo !str1!
- pause
- 结果分别位
- 5
- 12345
- 大家把代码改为
- setlocal enabledelayedexpansion
- for /l %%a in (1 1 5) do set str=%%a &echo !str! & pause
-
- for /l %%i in (1 1 5) do set str1=!str1!%%i &echo !str1! & pause
- echo %str%
- echo !str1!
- pause
- 知道不同了吧
-
- 呵呵
- 希望对大家有帮助
-
- 欢迎大家来bbs.bathome.net来一起探讨批处理的问题!
复制代码
|