本帖最后由 wokong 于 2014-1-4 19:46 编辑
这个是论坛的原题: 要求通过批处理输出10行每行30个由特殊字符随机组成的字符串(见举例)
这个是标准答案- 代码:
- :?^~!#$%^&*()='"><|/@\
- @echo off
- set/p str=<%~fs0
- setlocal enabledelayedexpansion
- for /l %%a in (1 1 10) do (
- for /l %%i in (1 1 30) do (
- set/a n=!random!%%22
- call :lp
- )
- echo !var!&set "var="
- )
- pause>nul&exit/b
- :lp
- set "var=!var!!str:~%n%,1!"
复制代码 这个是正确结果
\<^=|>*)(~$=!$==###"^!!&#*^~')
"^:*\*)>^&<%:"^>^'|(^~!)&&|&
%)'(^)$!|~'!%||##(%*)(!>)%:&
^!"'@\\~$>$*@~:'=='(=)|(^=|&%|
%)'&*'&&&>@^~"*^*||>$~|<!'<%=&
(|"\~**'^@^|))#@%$|^%)|#&**%<"
~)|\!(%:\#%>>#$&<&~!)@~~~=>!'*
|*'&<<$$!\%**:$*'=\"!$&|)#(*|~
#=\@@)<\=!%'(~\)":#<&%"'*!^>&~
:^@^^*>!\~%$%$=\=$>|%$~@"\~&#*
下面这个是我的代码 仅仅换了下位置,为啥就截然不同了,我的2种写法结果都不对。
《1》- :?^~!#$%^&*()='"><|/@\
- @echo off
- set/p str=<%~fs0
- setlocal enabledelayedexpansion
- for /l %%a in (1 1 10) do (
- for /l %%i in (1 1 30) do (
- set/a n=!random!%%22
- set var=!var!!str:~!n!,1!"
- )
- echo !var!&set "var="
- )
- pause>nul&exit/b
- :lp
复制代码 《2》- :?^~!#$%^&*()='"><|/@\
- @echo off
- set/p str=<%~fs0
- setlocal enabledelayedexpansion
- for /l %%a in (1 1 10) do (
- for /l %%i in (1 1 30) do (
- set/a n=!random!%%22
- set var=!var!!str:~%n%,1!"
- )
- echo !var!&set "var="
- )
- pause>nul&exit/b
- :lp
复制代码
|