[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
测试环境中文编码未处理好, 以下用40个英文字母替代中文文本:
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set nl=^
  4. for /l %%i in (0x100 1 0x127) do set nums=!nums!%%i,
  5. for /l %%i in (40 -1 1) do (
  6.   set /a rad=!random!%%%%i*4
  7.   for %%p in (!rad!) do (
  8.     set get=!nums:~%%p,3!
  9.     set /a val=get"&0xff
  10.     set ind=!ind!!val!,
  11.     for %%a in (!get!) do set nums=!nums:%%a,=!
  12.   )
  13. )
  14. for /f "usebackq delims=" %%l in ("%~0") do (
  15.   if /i "%%l"==":endText" set getText=0
  16.   if $!getText!==$1 set str=!str!%%l
  17.   if /i "%%l"==":text" set getText=1
  18. )
  19. for %%i in (!ind!) do (
  20.   set new=!new!!str:~%%i,1!
  21.   set /a lineOffs=cnt/8-%%i/8,colOffs=cnt%%8-%%i%%8
  22.   set "offs=!offs!!lineOffs!:!colOffs! "
  23.   if #!rem!==#7 set new=!new!!nl!& set offs=!offs!!nl!
  24.   set /a cnt+=1,rem=cnt%%8
  25. )
  26. echo !new!
  27. echo !offs!
  28. pause
  29. exit
  30. :text
  31. abcdefgh
  32. ijklmnop
  33. qrstuvwx
  34. yzABCDEF
  35. GHIJKLMN
  36. :endText
复制代码
1

评分人数

    • zm900612: 好!原来可以这么用...技术 + 1

TOP

本帖最后由 neorobin 于 2011-4-25 01:47 编辑

各位的算法, 我没有仔细研究, 粗略看了下发现大家都用了些一样的技巧或方法,
我写的有些长, 想了下, 下面两段
  1. for /l %%i in (40 -1 1) ...
  2. for %%i in (!ind!) ...
复制代码
可以整合在一起, ind 和 cnt 两个变量省去了, (另外用位运算对 8 求商和余数只是看起来酷点呵, 没什么实质):
  1. for /l %%i in (0 1 39) do (
  2.   set /a "rem=%%i&7, rand=!random!%%(40-%%i)*4
  3.   for %%p in (!rand!) do set get=!nums:~%%p,3!
  4.   set /a "val=get&0xff, lineOffs=(%%i>>3)-(val>>3), colOffs=(%%i&7)-(val&7)
  5.   set "offs=!offs!!lineOffs!:!colOffs! "
  6.   for %%v in (!val!) do set new=!new!!str:~%%v,1!
  7.   if #!rem!==#7 set new=!new!!nl!& set offs=!offs!!nl!
  8.   for %%a in (!get!) do set nums=!nums:%%a,=!
  9. )
复制代码

TOP

返回列表