找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 85009|回复: 42

[ 新手习题 5 ] 批处理倒序输出

[复制链接]
发表于 2008-11-30 13:05:28 | 显示全部楼层 |阅读模式
有一字符串 “!好你,nc.emohtab.sbb”,请把这个字符串倒过来显示。
  相信通过前面题目地练习,这题也不会难了。

目的:进一步掌握变量截取与条件判断用法,并学会灵活定义变量。

要求:倒序输出字符串。字符串可自定义,不考虑特殊字符。方法不限。
   不需要逐个显示,一次性输出就行。

评分:代码可读性 1 分;
   首个新方法 7 分,第二个 6 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 3 分,已经出现过的方法追加 1 分。
发表于 2008-11-30 15:53:43 | 显示全部楼层
  1. @echo off
  2. set str=!好你,nc.emohtab.sbb
  3. for /l %%a in (17 -1 0) do call set /p=%%str:~%%a,1%%<nul
  4. echo.&pause
复制代码

评分

参与人数 1PB +8 收起 理由
wxcute + 8 动作很快。

查看全部评分

发表于 2008-11-30 17:07:09 | 显示全部楼层
  1. @echo off & setlocal EnableDelayedExpansion
  2. set str=!好你,nc.emohtab.sbb
  3. :loop
  4. set /a n+=1
  5. set /p=!str:~-%n%,1!<nul
  6. if "!str:~%n%!" neq "" goto loop
  7. echo.&pause
复制代码

评分

参与人数 1PB +3 收起 理由
wxcute + 3 手下留情。

查看全部评分

发表于 2008-11-30 17:20:19 | 显示全部楼层
tireless兄还是应该给新手留点时间来思考嘛^_^
 楼主| 发表于 2008-11-30 17:34:54 | 显示全部楼层
是阿,开始没注意。再仔细一看原来这么眼熟,兄手下留情阿!
发表于 2008-12-1 09:57:50 | 显示全部楼层

凑个热闹^_^

  1. @echo off
  2. set "str=!好你,nc.emohtab.sbb"
  3. :loop
  4. If defined str set "var=%var%%str:~-1%" & set "str=%str:~,-1%" & goto loop
  5. Echo %var%
  6. Pause>nul
复制代码
发表于 2008-12-1 15:22:51 | 显示全部楼层

献丑了!

  1. @set,=!好你,nc.emohtab.sbb&for,/l,%%i,in,(17,-1,0),do,@call,set/p=%%,:~%%i,1%%<nul&ping/n 1 127.1>nul
复制代码

[ 本帖最后由 zhouyongjun 于 2008-12-1 15:24 编辑 ]

评分

参与人数 1PB +5 收起 理由
wxcute + 5 干嘛非得把代码写成这样,又不是作签名?不 ...

查看全部评分

发表于 2008-12-5 21:00:14 | 显示全部楼层

我党我军饿

@echo off
set a=好你.nc.emohtab.sbb
set b=%a:~-14%%a:~2,1%%a:~1,1%%a:~0,1%
echo %b%
pause
发表于 2008-12-21 11:48:30 | 显示全部楼层
纯娱版乐代码,哈哈
  1. @echo off
  2. call set /p=                      <nul
  3. set var=!好你,nc.emohtab.sbb
  4. for /l %%i in (0 1 3) do (
  5. ping /n 1 126.1>nul
  6. call set /p=<nul
  7. call set /p=%%var:~%%i,1%%<nul
  8. call set /p=<nul
  9. )
  10. call set /p=<nul
  11. for /l %%i in (4 1 17) do (
  12. ping /n 1 126.1>nul
  13. call set /p=%%var:~%%i,1%%<nul
  14. call set /p=<nul
  15. )
  16. pause>nul
复制代码
速度太快的话自己调下ping /n后面的数,注意加空格。
(编辑)感谢冰版鼓励,修改了一下代码,使它更娱乐一点。
  1. @echo off
  2. mode con cols=40 lines=8
  3. title bbs.bathome.net,你好!
  4. set c=00F53462B89AC7ED10
  5. :loop
  6. CLS
  7. ECHO.
  8. ECHO.
  9. ECHO.
  10. set /a num=%random%%%16
  11. call set col=%%c:~%num%,2%%
  12. COLOR %col%
  13. call set /p=                              <nul
  14. set var=!好你,nc.emohtab.sbb
  15. for /l %%i in (0 1 3) do (
  16. ping /n 1 126.1>nul
  17. call set /p=<nul
  18. call set /p=%%var:~%%i,1%%<nul
  19. call set /p=<nul
  20. )
  21. call set /p=<nul
  22. for /l %%i in (4 1 17) do (
  23. ping /n 1 126.1>nul
  24. call set /p=%%var:~%%i,1%%<nul
  25. call set /p=<nul
  26. )
  27. ping -n 3 127.1>nul
  28. goto loop
复制代码

[ 本帖最后由 firewolf85 于 2008-12-21 12:29 编辑 ]

评分

参与人数 1PB +5 收起 理由
wxcute + 5 呵呵,鼓励下

查看全部评分

发表于 2008-12-26 13:19:05 | 显示全部楼层

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set str1=!好你,nc.emohtab.sbb
  4. set /a n=0
  5. :loop
  6. set str2=!str1:~%n%,1!%str2%
  7. set /a n+=1
  8. if "!str1:~%n%,1!" neq "" goto loop
  9. echo 原字符串为:    %str1%
  10. echo 倒序后字符串为:%str2%
  11. pause>nul
复制代码


题目是可以完成了,但是遇到几个不明白的地方,希望高人指点一二。

第一:如果字符串中的感叹号换成英文输入法下的感叹号,上面的代码就不显示感叹号了,请问如何解决,尝试过楼上高手的代码,用set /p是可以输出英文感叹号的,为什么呢?


第三:如果将以上代码改一下,换成下面的

@echo off
setlocal enabledelayedexpansion
set str1=!好你,nc.emohtab.sbb
:loop
set /a n+=1
set str2=%str2%!str1:~-%n%,1!
if "!str1:~-%n%,1!" neq "" goto loop
echo 原字符串为:    %str1%
echo 倒序后字符串为:%str2%
pause>nul

这个代码就不会停止,请教是何道理?
只不过取字符的方向换了下而已啊。

评分

参与人数 1PB +5 收起 理由
wxcute + 5 &amp;quot;!str1:~-%n%,1!&amp;quot;我了个“-”负号,应为: .

查看全部评分

发表于 2008-12-27 11:39:34 | 显示全部楼层
给你两个例子,自己体会下看。以后遇到问题可以先自己写一些辅助代码来查看下问题所在。

  1. @echo off
  2. echo !
  3. echo ^!
  4. setlocal enabledelayedexpansion
  5. echo !
  6. echo ^!
  7. echo ^^!
  8. pause>nul
复制代码

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set str=12345678
  4. echo !str:~-7,1!
  5. echo !str:~-8,1!
  6. echo !str:~-10,1!
  7. echo !str:~-10,1!
  8. echo !str:~-15,1!
  9. echo !str:~-20,1!
  10. echo !str:~-100,1!
  11. echo !str:~-10000,1!
  12. pause>nul
复制代码

变量延迟详解
[url=http://www.cn-dos.net/forum/viewthread.php?tid=28273]http://www.cn-dos.net/forum/viewthread.php?tid=28273[/url]

什么情况下该使用变量延迟
http://www.cn-dos.net/forum/viewthread.php?tid=20733

一个变量嵌套变量的问题
http://www.cn-dos.net/forum/viewthread.php?tid=41143
发表于 2008-12-30 08:42:08 | 显示全部楼层
非常感谢楼上高手讲解,一定努力学习,自己多动手才是王道,谢谢楼上大侠!
发表于 2008-12-30 09:06:30 | 显示全部楼层
  • wxcute PB +5 "!str1:~-%n%,1!"我了个“-”负号,应为: . 2008-12-28 19:28

wxcute,小弟愚笨,没看懂啥意思啊

我上下两段代码不一样的,一个有负号,一个没有的。
 楼主| 发表于 2008-12-30 11:07:44 | 显示全部楼层

回复 13楼 的帖子

一个长度固定的字串,从前面数和从后面数长度是不会变的。
发表于 2008-12-30 12:23:56 | 显示全部楼层

回14楼 wxcute 帖子

原帖由 wxcute 于 2008-12-30 11:07 发表
一个长度固定的字串,从前面数和从后面数长度是不会变的。


楼主说的有道理,总算理解楼主的意思了,高手说话都不一样。

[ 本帖最后由 leaparde 于 2008-12-30 12:28 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:23 , Processed in 0.021625 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表