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

[文本处理] 把论坛的批处理精华下载,按照自己的思路写,call:pl的位置问题

本帖最后由 wokong 于 2014-1-4 19:46 编辑

这个是论坛的原题: 要求通过批处理输出10行每行30个由特殊字符随机组成的字符串(见举例)
这个是标准答案
  1. 代码:
  2. :?^~!#$%^&*()='"><|/@\
  3. @echo off
  4. set/p str=<%~fs0
  5. setlocal enabledelayedexpansion
  6. for /l %%a in (1 1 10) do (
  7.      for /l %%i in (1 1 30) do (
  8.           set/a n=!random!%%22
  9.           call :lp
  10.      )
  11.      echo !var!&set "var="
  12. )
  13. pause>nul&exit/b
  14. :lp
  15. set "var=!var!!str:~%n%,1!"
复制代码
这个是正确结果
\<^=|>*)(~$=!$==###"^!!&#*^~')
"^:*\*)>^&<%:"^>^'|(^~!)&&|&
%)'(^)$!|~'!%||##(%*)(!>)%:&
^!"'@\\~$>$*@~:'=='(=)|(^=|&%|
%)'&*'&&&>@^~"*^*||>$~|<!'<%=&
(|"\~**'^@^|))#@%$|^%)|#&**%<"
~)|\!(%:\#%>>#$&<&~!)@~~~=>!'*
|*'&<<$$!\%**:$*'=\"!$&|)#(*|~
#=\@@)<\=!%'(~\)":#<&%"'*!^>&~
:^@^^*>!\~%$%$=\=$>|%$~@"\~&#*

下面这个是我的代码 仅仅换了下位置,为啥就截然不同了,我的2种写法结果都不对。
《1》
  1. :?^~!#$%^&*()='"><|/@\
  2. @echo off
  3. set/p str=<%~fs0
  4. setlocal enabledelayedexpansion
  5. for /l %%a in (1 1 10) do (
  6.      for /l %%i in (1 1 30) do (
  7.           set/a n=!random!%%22
  8.           set var=!var!!str:~!n!,1!"
  9.      )
  10.      echo !var!&set "var="
  11. )
  12. pause>nul&exit/b
  13. :lp
复制代码
《2》
  1. :?^~!#$%^&*()='"><|/@\
  2. @echo off
  3. set/p str=<%~fs0
  4. setlocal enabledelayedexpansion
  5. for /l %%a in (1 1 10) do (
  6.      for /l %%i in (1 1 30) do (
  7.           set/a n=!random!%%22
  8.           set var=!var!!str:~%n%,1!"
  9.      )
  10.      echo !var!&set "var="
  11. )
  12. pause>nul&exit/b
  13. :lp
复制代码

8楼不要断章取义,挑拨离间,感谢大家的回答.

TOP

回复 6# wokong


    你是说4楼、5楼不是人吗?

TOP

这样就好了
  1. :~!@#$%^&*()<>"/\|'=;
  2. @echo off
  3. set/p str=<%~fs0 >nul
  4. setlocal enabledelayedexpansion
  5. for /l %%a in (1 1 10) do (
  6. set "var="
  7. for /l %%b in (1 1 30) do (
  8.    set/an=!random!%%21
  9.    for %%c in (!n!) do set "var=!var!!str:~%%c,1!"
  10. )
  11.    echo !var!
  12. )
  13. pause
复制代码

TOP

等了几天?没人?

TOP

大才们的问题,我全不会。只会用技巧。IDM就能办到。

TOP

你的第一种写法里面:
  1. set var=!var!!str:~!n!,1!"
复制代码
这样的变量嵌套在语法上就是错误的

TOP

你的call命令在哪里?

TOP

貌似没一个人呢

TOP

返回列表