Board logo

标题: [文本处理] 批处理实现字符串反转倒序输出 [打印本页]

作者: 基拉freedom    时间: 2008-10-5 13:49     标题: 批处理实现字符串反转倒序输出

这是JM的
  1. @echo off
  2. :: 反序显示输入,能处理 数字+字母(区分大小写)+符号 格式的混合型输入
  3. :: 区分大小写
  4. :: 稍加改造,可以实现密码的枚举?
  5. :: 不能处理的字符:
  6. :: 管道符号:|
  7. :: 重定向符号:<、>
  8. :: 连接符号:&
  9. :: 脱字或逃逸符号:%、^
  10. :: 其他符号:?、*、)、=、;、"
  11. :: code by jm 2006-9-7 CMD@XP
  12. cls
  13. set input=
  14. set /p input=           请输入一个字符串
  15. set output=
  16. if not "%input%"=="" set input=%input%
  17. :loop
  18. for %%i in (0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ~ ! @ # $ ^( - + . / \ [ ] { } : ') do (
  19.     (if %input:~-1% equ %%i set output=%output%%%i)&&set input=%input:~0,-1%
  20. )
  21. if not "%input%"=="" goto :loop
  22. echo        反序显示输入,结果是 %output%
复制代码
这是 也不知道哪里弄来的
  1. @echo off
  2. :star
  3. set Output=
  4. set /p Enter=请输入:
  5. :Start
  6. if not "%Enter%"=="" (
  7. set Output=%Output%%Enter:~-1%
  8. set Enter=%Enter:~0,-1%
  9. goto :Start)
  10. echo.
  11. echo        %Output%
  12. pause >nul&goto :Star
复制代码
还有一个是我无聊写写的
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set /p input=
  4. set n=1
  5. set "num=%input%"
  6. :begin
  7. set num1=!num:~-%n%,1!
  8. if "!num1!"=="" goto out
  9. set "src=!src!!num1!"
  10. set /a n=!n!+1
  11. goto begin
  12. :out
  13. echo !src!
  14. pause
复制代码
写这个有很多种的想法
JM版主写得是用for来查找相同的字符并对其赋值
我写的和第二个一样 只是单纯的对字符进行传输
对于非法字符也通过了
其实我很想知道为什么JM版主要用上这样的写法 和 这种写法有什么好处吗?
我希望能够知道
这里 还希望大家一起讨论下关于倒文输出的其他思路 方便交流 ~谢谢
作者: 基拉freedom    时间: 2008-10-5 13:52


知道了原来是为了逃避特殊字符的干扰
写得很好 很佩服 不知像我那种写法如何进行提高 还要研究一下
作者: yslyxqysl    时间: 2008-10-5 14:24

  1. @echo off
  2. setlocal
  3. setlocal EnableDelayedExpansion
  4. set /p input=请输入:
  5. if "!input!"=="" %0
  6. :aaa
  7. set /a n+=1
  8. set /p = !input:~-%n%,1!<nul
  9. rem 等号不能放在第一位,所以一定要加空格和
  10. if not "!input:~0,%n%!"=="!input!" goto aaa
  11. endlocal&&pause>nul
  12. cls&&%0
复制代码

[ 本帖最后由 yslyxqysl 于 2008-10-5 15:08 编辑 ]
作者: FOR    时间: 2008-10-6 03:13

  1. @echo off
  2. set /p input=请输入:
  3. :aaa
  4. set /p = %input:~-1,1%<NUL
  5. set input=%input:~0,-1%
  6. if defined input goto aaa
  7. pause>nul
复制代码

作者: batman    时间: 2008-10-6 11:29

sed版:
  1. @echo off
  2. set /p str=请输入要倒序的字符:
  3. set /p=倒序后:<nul
  4. echo %str%|sed "/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//"
  5. pause>nul
复制代码

作者: phandsome    时间: 2008-10-15 19:57

最好能在装换成MD5
作者: Batcher    时间: 2008-10-15 20:09     标题: 回复 6楼 的帖子

倒文和md5有什么关系,“最好”二字从何谈起?
作者: zqz0012005    时间: 2008-10-16 00:11     标题: 来个vbs吧

太幸运了,vbs有这个函数StrReverse
  1. 'WScript.Echo StrReverse("bbs.bathome.net")
  2. inputbox "倒文","结果",StrReverse(inputbox("请输入字符串",,"bbs.bathome.net"))
复制代码
回复 6楼 的帖子
要表达不同的话题请重新开贴!
MD5值计算工具:http://www.bathome.net/viewthread.php?tid=2142
作者: tiandyoin    时间: 2023-2-24 18:09

FOR 发表于 2008-10-6 03:13



    @rem 有 bug: 不能输入数字




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2