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

用call 的的方法之一

  1. @echo off&setlocal enabledelayedexpansion
  2. set sati=!time!
  3. set Ban=0
  4. for /f "tokens=* delims=*" %%a in (homebook.txt) do (
  5.         set str=%%a
  6.         if "!str:~-1!" equ "版" (set /a Ban+=1) else (
  7.                 for /f "tokens=1,2,*" %%b in ("!ban! !str:-=!") do (set Ban%%b=!Ban%%b!%%d@)
  8.         )
  9. )
  10. ::前面读取母本到变量
  11. for /f "tokens=*" %%a in (密文.txt) do (
  12.         set 原文=
  13.         for %%b in (%%a) do (
  14.                 for /f "tokens=1-4 delims=-" %%1 in ("%%b") do (
  15.                         set/a hang=%%2-1
  16.                         call :sub 原字 %%1 !hang! %%3 %%4
  17.                         set 原文=!原文!!原字!
  18.                 )
  19.         )
  20.         echo;!原文!
  21. )
  22. ::解密
  23. echo;!sati!
  24. echo;!time!
  25. set sati=!time!
  26. for /f "tokens=*" %%a in (原文.txt) do (
  27.         set sour=%%a
  28.         set/a z=8180,x=0,y=0
  29.         for /l %%a in (1,1,14) do (set/a "y=(z-x)/2+x"
  30.             for %%b in (!y!) do if "!sour:~%%b,1!" equ "" (set/a z=y) else (set/a x=y)
  31.         )
  32.         set 密文=
  33.         echo !sour! [!x!]
  34.         for /l %%b in (0,1,!x!) do (call :sub2 !sour:~%%b,1!)
  35.         echo;!密文!
  36. )
  37. ::加密
  38. echo;!sati!
  39. echo;!time!
  40. pause
  41. goto :eof
  42. :sub
  43. for /f "tokens=1-10 delims=@" %%0 in ("!Ban%2!") do (
  44.         for /f "tokens=1-5" %%1 in ("%%%3") do (
  45.                 set "str=@%%%4"
  46.                 set %1=!str:~%5,1!
  47.         )
  48. )
  49. goto :eof
  50. :sub2
  51. (
  52. for /l %%a in (1,1,!ban!) do (
  53.         if "!Ban%%a:%1=!" neq "!Ban%%a!" set str=!Ban%%a!&set zban=%%a
  54. )
  55. for /f "delims=%1" %%a in ("!str!") do (set str=%%a)
  56. set/a z=8180,x=0,y=0
  57. for /l %%a in (1,1,14) do (set/a "y=(z-x)/2+x"
  58.     for %%b in (!y!) do if "!str:~%%b,1!" equ "" (set/a z=y) else (set/a x=y)
  59. )
  60. set/a zhang=x/26+1,x=x%%26,zlie=x/5+1,zzhi=x%%5+1
  61. set 密文=!密文! !zban!-!zhang!-!zlie!-!zzhi!
  62. goto :eof)
复制代码

[ 本帖最后由 netbenton 于 2009-11-23 23:43 编辑 ]

TOP

没有call 的方法之一

  1. @echo off&setlocal enabledelayedexpansion
  2. set sati=!time!
  3. set Ban=0
  4. for /f "tokens=* delims=*" %%a in (homebook.txt) do (
  5. set str=%%a
  6. if "!str:~-1!" equ "版" (set /a Ban+=1) else (
  7.   for /f "tokens=1,2,*" %%b in ("!ban! !str:-=!") do (set Ban%%b=!Ban%%b!%%d@)
  8. )
  9. )
  10. ::前面读取母本到变量
  11. for /f "tokens=*" %%a in (密文.txt) do (
  12. set 原文=
  13. for %%b in (%%a) do (
  14.   for /f "tokens=1-4 delims=-" %%1 in ("%%b") do (
  15.    for /f "tokens=1-10 delims=@" %%0 in ("!Ban%%1!") do (
  16.     set v1=%%0&set v2=%%1&set v3=%%2&set v4=%%3&set v5=%%4&set v6=%%5&set v7=%%6&set v8=%%7&set v9=%%8&set v10=%%9
  17.    )
  18.    for /f "tokens=1-5" %%0 in ("!v%%2!") do (
  19.     set v1=%%0&set v2=%%1&set v3=%%2&set v4=%%3&set v5=%%4
  20.    )
  21.    set "str=@!v%%3!"
  22.    set 原文=!原文!!str:~%%4,1!
  23.   )
  24. )
  25. echo;!原文!
  26. )
  27. ::解密
  28. echo;!sati!
  29. echo;!time!
  30. set sati=!time!
  31. for /f "tokens=*" %%a in (原文.txt) do (
  32. set sour=%%a
  33. set/a z=8180,x=0,y=0
  34. for /l %%a in (1,1,14) do (set/a "y=(z-x)/2+x"
  35.      for %%b in (!y!) do if "!sour:~%%b,1!" equ "" (set/a z=y) else (set/a x=y)
  36. )
  37. set 密文=
  38. echo !sour! [!x!]
  39. for /l %%b in (0,1,!x!) do (
  40.   for %%c in ("!sour:~%%b,1!") do (
  41.    for /l %%d in (1,1,!ban!) do (
  42.     if "!Ban%%d:%%~c=!" neq "!Ban%%d!" set str=!Ban%%d!&set zban=%%d
  43.    )
  44.    for %%d in ("!str:*%%~c=!") do set "str=!str:%%~d=!"
  45.    
  46.    set/a z=1000,x=0,y=0
  47.    for /l %%a in (1,1,11) do (set/a "y=(z-x)/2+x"
  48.     for %%b in (!y!) do if "!str:~%%b,1!" equ "" (set/a z=y) else (set/a x=y)
  49.    )
  50.    set/a zhang=x/26+1,x=x%%26,zlie=x/5+1,zzhi=x%%5
  51.    set 密文=!密文! !zban!-!zhang!-!zlie!-!zzhi!
  52.   )
  53. )
  54. echo;!密文!
  55. )
  56. ::加密
  57. echo;!sati!
  58. echo;!time!
  59. pause
  60. goto :eof
复制代码

[ 本帖最后由 netbenton 于 2009-11-23 23:43 编辑 ]
3

评分人数

TOP

28楼的肯定是双核cup

虽然批处理运行很“霸时间”,但是双核的cup不管怎样,一个进程只会用一个cup去执行。

[ 本帖最后由 netbenton 于 2009-11-25 12:27 编辑 ]

TOP

我的方法再提提速速

  1. @echo off&setlocal enabledelayedexpansion
  2. set sati=!time!
  3. set Ban=0
  4. for /f "tokens=* delims=*" %%a in (homebook.txt) do (
  5.         set str=%%a
  6.         if "!str:~-1!" equ "版" (set /a Ban+=1) else (
  7.                 for /f "tokens=1,2,*" %%b in ("!ban! !str:-=!") do (set Ban%%b=!Ban%%b!%%d@)
  8.         )
  9. )
  10. ::前面读取母本到变量
  11. for /f "tokens=*" %%a in (密文.txt) do (
  12.         set 原文=
  13.         for %%b in (%%a) do (
  14.                 for /f "tokens=1-4 delims=-" %%1 in ("%%b") do (
  15.                         for /f "tokens=1-10 delims=@" %%0 in ("!Ban%%1!") do (
  16.                                 set vv=1%%02%%13%%24%%35%%46%%57%%68%%79%%810%%9
  17.                         )
  18.                         for /f "tokens=1-5" %%0 in ("!vv:*%%2=!") do (
  19.                                 set vv=1%%02%%13%%24%%35%%4
  20.                         )
  21.                         set "str=@!vv:*%%3=!"
  22.                         set 原文=!原文!!str:~%%4,1!
  23.                 )
  24.         )
  25.         echo;!原文!
  26. )
  27. ::解密
  28. echo;!sati!
  29. echo;!time!
  30. set sati=!time!
  31. for /f "tokens=*" %%a in (原文.txt) do (
  32.         set sour=%%a
  33.         set/a z=8180,x=0,y=0
  34.         for /l %%a in (1,1,14) do (set/a "y=(z-x)/2+x"
  35.             for %%b in (!y!) do if "!sour:~%%b,1!" equ "" (set/a z=y) else (set/a x=y)
  36.         )
  37.         set 密文=
  38.         echo !sour! [!x!]
  39.         for /l %%b in (0,1,!x!) do (
  40.                 for %%c in ("!sour:~%%b,1!") do (
  41.                         for /l %%d in (1,1,!ban!) do (
  42.                                 if "!Ban%%d:%%~c=!" neq "!Ban%%d!" set str=!Ban%%d!&set zban=%%d
  43.                         )
  44.                         for /f "tokens=1-10 delims=@" %%0 in ("!str!") do (
  45.                                 set vv=1%%0@1@2%%1@2@3%%2@3@4%%3@4@5%%4@5@6%%5@6@7%%6@7@8%%7@8@9%%8@9@10%%9@10@
  46.                         )
  47.                         for /f "tokens=1,2 delims=@" %%0 in ("!vv:*%%~c=!") do (
  48.                                 set zhang=%%1
  49.                                 set vv=!vv:*%%1=!
  50.                         )
  51.                         for /f "tokens=1-5" %%0 in ("!vv!") do (
  52.                                 set vv=1%%0 @1@2%%1 @2@3%%2 @3@4%%3 @4@5%%4 @5@
  53.                         )
  54.                         for /f "tokens=1,2 delims=@" %%0 in ("!vv:*%%~c=!") do (
  55.                                 set zlie=%%1
  56.                         )
  57.                                 set vv=!vv:*%%~c=!
  58.                                 set vv=!vv: =1234!
  59.                                 set zzhi=!vv:~3,1!
  60.                
  61.                         set 密文=!密文! !zban!-!zhang!-!zlie!-!zzhi!
  62.                 )
  63.         )
  64.         echo;!密文!
  65. )
  66. ::加密
  67. echo;!sati!
  68. echo;!time!
  69. pause
  70. goto :eof
复制代码

TOP

返回列表