批处理按要求将字符串分段输出的实现代码


一、要求用批处理随机输出200个字符到1.txt中的一行,内容类同如下:
 
代码:
xh45q3ma+remgofm54sevhrna4g5r8pl9cjardezqjwj3m8itamh0a4itzd6jz8cmrfmibmhr0wmccyb8qnp2qh4rvlwff6yr2ez4eo063u6viy7ppw+nzxaxe8vrm190eei_0dwx5e2kxbds-ae6e96c9_i9glw8mz+uf6uienx9od8bktfnjlwlqu-e1rcj33_+4bz
二、要求用批处理将1.txt中的内容按10个字符为一段输出如下面两种形式:
在一行内输出:
 
代码:
xh45q3ma+r emgofm54se vhrna4g5r8 pl9cjardez qjwj3m8ita mh0a4itzd6 jz8cmrfmib mhr
0wmccyb 8qnp2qh4rv lwff6yr2ez 4eo063u6vi y7ppw+nzxa xe8vrm190e ei_0dwx5e2 kxbds-
ae6e 96c9_i9glw 8mz+uf6uie nx9od8bktf njlwlqu-e1 rcj33_+4bz
分行输出:
 
代码:
xh45q3ma+r
emgofm54se
vhrna4g5r8
pl9cjardez
qjwj3m8ita
mh0a4itzd6
jz8cmrfmib
mhr0wmccyb
8qnp2qh4rv
lwff6yr2ez
4eo063u6vi
y7ppw+nzxa
xe8vrm190e
ei_0dwx5e2
kxbds-ae6e
96c9_i9glw
8mz+uf6uie
nx9od8bktf
njlwlqu-e1
rcj33_+4bz
----------------------------------------------------------------------------------------------------------------------------------------------------
要求:代码高效、通用、简洁、不产生临时文件
ps:请老手们将本题留给新手完成

more:
复制代码 代码如下:

@echo off
Setlocal Enabledelayedexpansion
set "str=abcdefghijklmnopqrstuvwxyz1234567890+-_"
for /l %%a in (1 1 200) do (
set /a "m=!random!%%39"
call set "var1=%%var1%%%%str:~!m!,1%%"
)
set "var=%var1%"
for /l %%a in (1 1 20) do (
set "var2=!var:~,10!"
set /p =!var2! <NUL
set "var=!var:~10!"
)
echo.&echo.&set "var=%var1%"
for /l %%a in (1 1 20) do (
set "var2=!var:~,10!"
echo.!var2!
set "var=!var:~10!"
)
pause>nul

 

shqf:
复制代码 代码如下:

@echo off
set /p str=<1.txt
set /p select=1.一行内分节显示 2.分行显示(请选择1-2):
if %select% equ 2 goto fh

:fj
set /p=%str:~,10% <nul
if not "%str:~10%"=="" (set str=%str:~10%&goto fj)
pause>nul&goto end

:fh
echo %str:~,10%
if not "%str:~10%"=="" (set str=%str:~10%&goto fh)
pause>nul

 

terse:
复制代码 代码如下:

@echo off&Setlocal Enabledelayedexpansion
set "var=abcdefghijklmnopqrstuvwxyz1234567890+-_"
for /l %%i in (1 1 200) do set /a "m=!random!%%39"&call set str=!str!%%var:~!m!,1%%
>1.txt echo %str%
for /l %%i in (1 1 20) do set /p=!str:~,10! <nul&set "%%i=!str:~,10!"&set "str=!str:~10!"
echo.
for /l %%i in (1 1 20) do echo.!%%i!
pause>nul

 

pusofalse:
复制代码 代码如下:

@echo off&setlocal enabledelayedexpansion
set var=abcdefghijklmnopqrstuvwxyz0123456789+-_
for /l %%a in (1 1 200) do (
set/a n=!random!%%39
call,set a=!a!%%var:~!n!,1%%
)
echo %a%&pause>nul&echo.
:lp
for /l %%i in (0 10 190) do if not defined b (set/p=!a:~%%i,10! <nul) else echo !a:~%%i,10!
if not defined b set b=b&pause>nul&echo.&echo.&goto lp
pause

 

inittab:
复制代码 代码如下:

@echo off&setlocal enabledelayedexpansion
set "str=1234567890abcdefghijklmnopqrstuvwxyz@#$_+-"
for /l %%i in (0,1,199) do (
set/a ran=!random!%%42&call set "st=!st!%%str:~!ran!,1%%"
)
echo 整行输出: !st!&echo.&echo 分列输出:
for /l %%j in (0,10,190) do (
set /a m=%%j
call set "st1=!st1!%%st:~!m!,10%% "
call echo %%st:~!m!,10%%
)
echo.&echo 分段输出: !st1!
pause

 

netbenton:
复制代码 代码如下:

@echo off&setlocal enabledelayedexpansion
set "str=1234567890abcdefghijklmnopqrstuvwxyz@#$_+-"
for /l %%i in (0,1,199) do set/a ran=!random!%%42&for %%a in (!ran!) do set "st=!st!!str:~%%a,1!"
echo 整行输出: !st!&echo.&echo 分列输出:
for /l %%j in (0,10,190) do echo !st:~%%j,10!&set "st1=!st1!!st:~%%j,10! "
echo.&echo 分段输出: !st1!
pause

 

bathman:
复制代码 代码如下:

@echo off
rem 随机生成200个字符
set "var=abcdefghijklnmopqrstuvwxyz0123456789+_/-"
:begin
set /a a=%random%%%40,n+=1
call,set "str=%str%%%var:~%a%,1%%"
if %n% neq 200 goto begin
rem 在一行内分段输出
:lp
set /a m+=1
set /p=%str:~,10% <nul&set "_%m%=%str:~,10%"
set "str=%str:~10%"
if defined str goto lp
rem 分行输出分段后字符
echo.&echo.&for /l %%i in (1,1,%m%) do call,echo %%_%%i%%
pause>nul

« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3