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

【练习-011】批处理按要求将字符串分段输出

[复制链接]
发表于 2008-8-12 10:03:10 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set var=abcdefghijklmnopqrstuvwxyz0123456789+-_
  3. for /l %%a in (1 1 200) do (
  4.    set/a n=!random!%%39
  5.    call,set a=!a!%%var:~!n!,1%%
  6. )
  7. echo %a%&pause>nul&echo.
  8. :lp
  9. for /l %%i in (0 10 190) do if not defined b (set/p=!a:~%%i,10! <nul) else echo !a:~%%i,10!
  10. if not defined b set b=b&pause>nul&echo.&echo.&goto lp
  11. pause
复制代码


[ 本帖最后由 pusofalse 于 2008-8-12 10:07 编辑 ]

评分

参与人数 1PB +8 收起 理由
batman + 8 代码简洁

查看全部评分

 楼主| 发表于 2008-8-12 11:05:49 | 显示全部楼层
原帖由 terse 于 2008-8-12 09:59 发表

多处错误?望兄指正。

这是你第一次的代码:
 楼主| 发表于 2008-8-12 12:31:11 | 显示全部楼层
下面给出本人的解吧:
  1. @echo off
  2. rem 随机生成200个字符
  3. set "var=abcdefghijklnmopqrstuvwxyz0123456789+_/-"
  4. :begin
  5. set  /a a=%random%%%40,n+=1
  6. call,set "str=%str%%%var:~%a%,1%%"
  7. if %n% neq 200 goto begin
  8. rem 在一行内分段输出
  9. :lp
  10. set /a m+=1
  11. set /p=%str:~,10% <nul&set "_%m%=%str:~,10%"
  12. set "str=%str:~10%"
  13. if defined str goto lp
  14. rem 分行输出分段后字符
  15. echo.&echo.&for /l %%i in (1,1,%m%) do call,echo %%_%%i%%
  16. pause>nul
复制代码

[ 本帖最后由 batman 于 2008-8-12 12:40 编辑 ]
发表于 2008-8-12 14:44:33 | 显示全部楼层
原帖由 batman 于 2008-8-12 11:05 发表

这是你第一次的代码:
208

谢谢 第一次的代码在我的短消息里找到
不过 我这里运行没出现问题
我想知道兄指的多处错误是否就是生成数和行呢?如是的话 那是我测试没改过来的
发表于 2009-5-1 23:56:48 | 显示全部楼层

  1. @echo off
  2. set "str=0123456789abcdefghijklmnopqrstuvwxyz-+/_"
  3. :start
  4. set /a n=%random%%%40,m+=1
  5. call,set num=%%str:~%n%,1%%&set var=%num%%var%
  6. if %m%==201 (echo %var%>>1.txt&goto next) else (goto start)
  7. :next
  8. echo 分行输出:&set /p a=<1.txt&set b=0
  9. :lp
  10. call,set c=%%a:~%b%,10%%
  11. if "%c%"=="" goto end
  12. call,set d=%%d%%%c% &echo %c%&set /a b+=10
  13. goto :lp
  14. :end
  15. echo.&echo.&echo.&echo 一行输出:&echo %d%&pause
复制代码

[ 本帖最后由 keen 于 2009-5-3 17:53 编辑 ]
发表于 2009-5-3 09:52:39 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=1234567890abcdefghijklmnopqrstuvwxyz@#$_+-"
  3. for /l %%i in (0,1,199) do (
  4. set/a ran=!random!%%42&call set "st=!st!%%str:~!ran!,1%%"
  5. )
  6. echo 整行输出: !st!&echo.&echo 分列输出:
  7. for /l %%j in (0,10,190) do (
  8. set /a m=%%j
  9. call set "st1=!st1!%%st:~!m!,10%% "
  10. call echo %%st:~!m!,10%%
  11. )
  12. echo.&echo 分段输出: !st1!
  13. pause
复制代码

评分

参与人数 1PB +10 收起 理由
batman + 10

查看全部评分

发表于 2009-5-4 11:08:34 | 显示全部楼层
根据楼上的再精简、提速
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=1234567890abcdefghijklmnopqrstuvwxyz@#$_+-"
  3. for /l %%i in (0,1,199) do set/a ran=!random!%%42&for %%a in (!ran!) do set "st=!st!!str:~%%a,1!"
  4. echo 整行输出: !st!&echo.&echo 分列输出:
  5. for /l %%j in (0,10,190) do echo !st:~%%j,10!&set "st1=!st1!!st:~%%j,10! "
  6. echo.&echo 分段输出: !st1!
  7. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:09 , Processed in 0.019303 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表