转自批处理之家
a.txt:
ababababababababa
输出:
ababababababababa
aba a aba ab b b
a a ab a b
a ab b
a
空格位置是随机产生的,但纵向都是同一字母。。。
a.txt:
ababababababababa
输出:
ababababababababa
aba a aba ab b b
a a ab a b
a ab b
a
空格位置是随机产生的,但纵向都是同一字母。。。
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@echo off&setlocal enabledelayedexpansion
set str=ababababababababa
echo %str%
:begin
set n=0&set m=0&set "var="
set /a a=%random%%%17+1,b=%random%%%17+1,c=%random%%%17+1
if %a% equ %b% goto begin
if %a% equ %c% goto begin
if %b% equ %c% goto begin
:lp
set /a n+=1
for %%i in (%a% %b% %c%) do if %%i equ %n% set m=1
if %m% equ 0 (
set var=!var!%str:~,1%
) else (
set "var=!var! "
)
set str=%str:~1%&set m=0
if defined str goto lp
if "!var!"==" " pause>nul&goto :eof
echo !var!
set str=!var!&goto begin@echo off&setlocal enabledelayedexpansion
set str=ababababababababa
echo %str%
:begin
set n=0&set m=0&set x=0&set "var="
:set
set /a a=%random%%%17+1
for %%i in (%code%) do if %%i equ %a% goto set
set /a x+=1&set code=%code% %a%
if %x% lss 3 goto set
:lp
set /a n+=1
for %%i in (%code%) do if %%i equ %n% set m=1
if %m% equ 0 (
set var=!var!%str:~,1%
) else (
set "var=!var! "
)
set str=%str:~1%&set m=0
if defined str goto lp
if "!var!"==" " pause>nul&goto :eof
echo !var!
set str=!var!&goto beginecho off
set "str=ab "&set m=0
:begin
set /a a=%random%%%60+1
set "var="
:lp
set /a b=%random%%%3
call,set c=%%str:~%b%,1%%
if not "%c%"==" " set /a m+=1
set /a n+=1&set var=%c%%var%
if %n% lss %a% goto lp
echo.%var%
if %m% lss 60 goto begin
pause>nul@echo off&setlocal enabledelayedexpansion
set "str=ab"&set /a a=%random%%%60+1
:begin
set /a b=%random%%%2
set c=!str:~%b%,1!&set var=%var%!c!
set /a n+=1
if %n% lss %a% goto begin
echo 下面为本次生成的字符串:
echo %var%&set code=%var%
echo 下面输出的字符(不含空格)总数为60个:
set "str="&set n=0
:lp
if !n! lss 60 if defined var (
set /a b=%random%%%2
if !b! equ 0 (
set "b= "
) else (
set b=!var:~,1!&set /a n+=1
)
set str=%str%!b!
set var=%var:~1%
goto lp
)
echo.%str%
if !n! lss 60 set str=&set var=%code%&goto lp
pause>nulOriginally posted by 26933062 at 2008-5-7 12:16:
要求的就是随机,如果可能的话一行也有可能.
应该是随机产生a或b,是一个一个产生的.总数为60个.

Originally posted by zw19750516 at 2008-5-7 04:30 PM:
@echo off&setlocal enabledelayedexpansion
set "str=ab"&set /a a=%random%%%60+1
:begin
set /a b=%random%%%2
set c=!str:~%b%,1!&set var=%var%!c!
set /a n+=1
if %n% l ...
Originally posted by 26933062 at 2008-5-7 19:44:
回复 12 楼
不好意识,答案仍不正确,可能是我描述的不够清楚吧。
每个字母的正上方不能是空格。
这么说吧
随机生成第一个字母,比如说是a就把 ...
@echo off&setlocal enabledelayedexpansion
set "str=ab"&set /a a=%random%%%60+1
:begin
set /a b=%random%%%2
set c=!str:~%b%,1!&set var=%var%!c!
set /a n+=1
if %n% lss %a% goto begin
echo 下面为本次生成的字符串:
echo %var%
set "str="&set n=0
:lp
if !n! lss 60 if defined var (
set /a b=%random%%%2
if !b! equ 0 (
set "b= "
) else (
set b=!var:~,1!&set /a n+=1
)
set str=%str%!b!
set var=%var:~1%
goto lp
)
echo.%str%
if !n! lss 60 set var=%str%&set str=&goto lp
pause>nulOriginally posted by pusofalse at 2008-5-7 22:21:
ababababababababa
xbxbxxabaxxbaxxxa
xbxxxxaxaxxbaxxxx
xxxxxxaxaxxbaxxxx
xxxxxxxxaxxbxxxxx
xxxxxxxxxxxbxxxxx
x代表空格
比如第一行的第2个字符是b 到了第四行时第2个字符 ...
Originally posted by zw19750516 at 2008-5-7 10:24 PM:
如是这样,请运行我17的代码。
ababababa
a ab b ba
ab b a
b a
aaaaaaaaa
bbbbb
aaaaaaaa
bbbb
aaaaaaaa
aaaaaaaaaaaa
bbbbbbbbbbbbbb
@echo off
setlocal enabledelayedexpansion
set "code=ab"
set /a c=%random%%%2,d=%random%%%60+1,e=d*2
for /l %%i in (1,1,%d%) do (
if %c%==0 (
set var1=!var1!ab&set /a numa+=1,numb+=1
) else (
set var1=!var1!ba&set /a numa+=1,numb+=1
))
:again
echo %var1%
set "var2="
set n=0
:again_
set /a f=%random%%%2
call set g=%%code:~%f%,1%%
call set h=%%var1:~%n%,1%%
if "%g%"=="%h%" (
set "var2=%var2%!g!"&set /a num!g!+=1,n+=1
) else (
set "var2=%var2% "&set /a n+=1
)
if %numa% gtr 60 (if %numb% gtr 60 echo %var2%&pause&exit /b)
if %n% lss %e% goto :again_
echo %var2%
set n=0
set "var1="
:more
set /a i=%random%%%2
call set j=%%code:~%i%,1%%
call set k=%%var2:~%n%,1%%
if "%j%"=="%k%" (
set "var1=%var1%!j!"&set /a num!j!+=1,n+=1
) else (
set "var1=%var1% "&set /a n+=1
)
if %numa% gtr 60 (if %numb% gtr 60 echo %var2%&pause&exit /b)
if %n% lss %e% goto :more
goto :again而且b和a好像不太随机
@echo off&setlocal enabledelayedexpansion
Title 本代码演示了个无聊的过程…
color 1f
Set Max=60
Set FixTime=0
::这个为自定义开关~你想使用自己设定的列数修改之……
Set firstline=slore
Set abFlag=sloreissloreleeandsloreleeisslorehahailovedoscndosgoodblue
::自然可以用1~60,不过第一行太多不好看哈哈,不喜欢的自己改~
if %firstline%==slore (
Set /a firstline=%random%%%5+20
Set /a Max=%random%%%20+40
Set Msg=Slore 设置输出!firstline!列 共!Max!个字符
) else (
Set Msg=%username% 设置输出%firstline%列 共%Max%个字符)
echo o(∩_∩)o-----------------------------------轩----
echo %Msg%
echo ----轩-----------------------------------o(∩_∩)o
echo.
Set /a n=%firstline%/2
for /l %%i in (1,1,%n%) do Call,Set fl=!fl!ab
Set /a n=%firstline%%%2
if %n% EQU 1 Set fl=%fl%a
echo %fl%
Set ab=%firstline%
Set /a endline=%ab%-1
Set i=0
:Loop
Set /a abPos=%i%%%%firstline%
Set /a rad1=%abPos%%%2
Set /a rad2=%random%%%2
Set /a i+=1
Set Posletter=!abFlag:~%abPos%,1!
if %FixTime% EQU %endline% Set rad2=1
if %rad1% EQU 0 (
if "%Posletter%"==" " (Set nl=%nl% ) else (
if %rad2% EQU 0 (Set nl=%nl% &Call :Fix %abPos%) else Set nl=%nl%a&Set /a ab+=1)
) else (
if "%Posletter%"==" " (Set nl=%nl% ) else (
if %rad2% EQU 0 (Set nl=%nl% &Call :Fix %abPos%) else Set nl=%nl%b&Set /a ab+=1)
)
if %abPos% EQU %endline% echo %nl%
if %abPos% EQU %endline% Set nl=
if %ab% EQU %Max% goto :ExitLoop
goto :Loop
:ExitLoop
if Not "%nl%"=="" echo %nl%
echo.
::echo ab的个数为:%ab%
echo 无聊的代码演示结束!
pause>nul
:Fix
if %FixTime% EQU %endline% goto :EndFix
Set /a e=%1+1
Set abFlag=!abFlag:~0,%1! !abFlag:~%e%!
Set /a FixTime+=1
:EndFix
你的代码貌似不是固定输出格式?
而且md,rd=。=造文件夹是……
@echo off
setlocal enabledelayedexpansion
set "code=ab"
set /a c=%random%%%2,d=%random%%%20+20,e=d*2
for /l %%i in (1,1,%d%) do (
if %c%==0 (
set var1=!var1!ab
) else (
set var1=!var1!ba
))
:again
md "%var1%" >nul 2>nul
if errorlevel 1 pause&exit /b
rd "%var1%" >nul 2>nul
echo %var1%
set "var2="
set n=0
:again_
set /a f=%random%%%2
call set g=%%code:~%f%,1%%
call set h=%%var1:~%n%,1%%
if "%g%"=="%h%" (
set "var2=%var2%!g!"&set /a n+=1
) else (
set "var2=%var2% "&set /a n+=1
)
if %n% lss %e% goto :again_
md "%var2%" >nul 2>nul
if errorlevel 1 pause&exit /b
rd "%var2%" >nul 2>nul
echo %var2%
set n=0
set "var1="
:more
set /a i=%random%%%2
call set j=%%code:~%i%,1%%
call set k=%%var2:~%n%,1%%
if "%j%"=="%k%" (
set "var1=%var1%!j!"&set /a n+=1
) else (
set "var1=%var1% "&set /a n+=1
)
if %n% lss %e% goto :more
goto :again
@echo off&color 1f
set _0=○&set "_1=●"&set /a ko=60
setlocal enabledelayedexpansion
for /l %%l in (1 1 %ko%) do (
set /a w=!random!%%2
call set "ss=%%_!w!%%"
if not "!ss!"=="!flag!" (
set "flag=!ss!"
set /a h=1
set "num1=!num1!!ss!"
call :loop
) else (
set /a h+=1
call set "num!h!=%%num!h!:~0,-1%%!ss!"
))
for /l %%l in (1 1 %ko%) do if not "!num%%l: =!"=="" echo !num%%l!
echo.&pause&exit
:loop
for /l %%l in (2 1 !ko!) do set "num%%l=!num%%l! "
goto :eof
Originally posted by 26933062 at 2008-5-8 19:30:
39楼格式是对了,但初看你的列数都是可以自定义的啊?那a和b岂不是就不是随机的了?若每一个a和b都是随机的,那么列数是不可能预知的。
第一行不能有空格,且必须是ababab这样交错的