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

【练习-031】批处理代码改错

出题目的:
     通过解题了解哪些是新手们容易忽视的地方,以减少甚至杜绝常规错误的发生
加分原则:
  1、将题中的错误全部找出并改正过来加满分15分
  2、少找出一处扣1分
  3、未输出最后结果扣4分
题目如下:
  有一错误代码如下,请将此代码中11处错误全部修改过来并输出最后结果
  1. @echo off
  2. set "code=19#3 1#3 50#2 $ 1#0 3#3 20#3 $ 3#5 20#3 1#1 2#1"
  3. for /f "skip=1" %%i in (help) do set /a n+=1&set "_%n%=%%i"
  4. for /f %%a in (%code%) do (
  5.     for /f "tokens=1,2 delims=#" %%i in (%%a) do (
  6.         if "%%i" equ "$" (
  7.            set /p= >nul
  8.            ) else (
  9.            set "str=%_%%i%"
  10.            set /p=%str:~%%j,1%>nul
  11.      )
  12. )
  13. pause>nul
复制代码
个人要求:
  请版主们先将此题留给会员们思考。。。
多谢namejm提醒,补充下原代码的意图:
  原正确代码就是要在系统help信息中获取指定的字符组合成一句话输出,这也是对批处
理明码进行加密的一个常用手法。

为给更多的会员留下思考的机会,特先将已经贴出的代码屏蔽,也请被屏蔽的会员谅解了。
1

评分人数

    • rat: 这类题有意思,可以再出填空题什么的PB + 10
***共同提高***

原帖由 Batcher 于 2008-11-2 11:53 发表
如果不是对批处理有相当程度的了解,要猜出这个代码的意图,还是比较困难的^_^

是的,这也是我一次比较大胆的尝试,就是想大家能多注意平常易犯的小错误。。。
***共同提高***

TOP

提示:
  大家还是要从原代码的意图来着手,同时回忆下平常总是会犯些什么样的常见错误,这题就好解了。
***共同提高***

TOP

原帖由 随风 于 2008-11-2 17:45 发表
是否应该把正确代码运行的结果也帖一部分出来?

随风兄提示的好,其结果就是一句话:其中最后的两个字符为"st"
***共同提高***

TOP

原代码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "code=19#3 1#3 50#2 $ 1#0 3#3 20#3 $ 3#5 20#3 1#1 2#1"
  3. for /f "skip=1" %%i in ('help') do set /a n+=1& set "_!n!=%%i"
  4. for %%a in (%code%) do (
  5.     for /f "tokens=1,2 delims=#" %%i in ("%%a") do (
  6.         if "%%i" equ "$" (
  7.            set /p= <nul
  8.            ) else (
  9.            set "str=!_%%i!"
  10.            set /p=!str:~%%j,1!<nul
  11.         )
  12.      )
  13. )
  14. pause>nul
复制代码
之所以启用变量延迟是因为用call会降低代码效率。
***共同提高***

TOP

返回列表