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

[数值计算] 如何利用批处理控制数字个数?

[复制链接]
发表于 2011-7-29 09:58:25 | 显示全部楼层 |阅读模式
我们可以利用set /a 来进行数字的递加或递减,如
10
12
14
16
18
……
但假如要实现如下结果:
1
11
111
1111
11111
……
该怎么办?
发表于 2011-7-29 10:52:34 | 显示全部楼层
  1. @echo off
  2. for /l %%a in (1,1,5) do (
  3.     for /l %%b in (1,1,%%a) do (
  4.         set /p "=1"<nul
  5.     )
  6.     echo,
  7. )
  8. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-7-29 11:07:28 | 显示全部楼层
回复 2# CUer
高手啊 等我好好研究研究 谢谢
 楼主| 发表于 2011-7-29 11:51:18 | 显示全部楼层
回复 2# CUer


    能给我解释下吗?
看不懂~~~~~~~~~~~
发表于 2011-7-29 11:56:21 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "n="
  4. for /l %%a in (1,1,5) do (
  5.     set n=1!n!
  6.     echo,!n!
  7. )
  8. pause
复制代码
发表于 2011-7-29 11:57:50 | 显示全部楼层
回复 4# 1130342432


两层for循环
外层循环用来控制输出几行
内存循环用来控制每行输出几个1
发表于 2011-7-29 12:25:33 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "str=1111111111"
  4. for /l %%a in (1,1,5) do (
  5.     echo,!str:~0,%%a!
  6. )
  7. pause
复制代码
发表于 2011-7-29 12:51:57 | 显示全部楼层
本帖最后由 CrLf 于 2011-7-29 12:56 编辑

set /p 不换行附加和 set 修改变量的思路 cuer 已经讲过了,我提供另外两种算法
纯计算也可以,不过效率和通用性不如直接用 set 为变量附加数值:
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=111
  3. for /l %%a in (1 1 6) do (
  4.    set /a n=n*10+n%%10
  5.    echo !n!
  6. )
  7. pause
复制代码
另外一种算法是事先定义一个值,再用变量偏移来输出,这是效率极高的方案,个人比较偏爱:
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=11111111111111
  3. for /l %%a in (1 1 10) do echo !n:~0,%%a!
  4. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 First arithmetic is amusing!

查看全部评分

发表于 2011-7-29 15:30:37 | 显示全部楼层
看了楼上的代码其实就是因为数字的规律性当做文本来处理就很容易了,如果当成数字来计算就复杂化了,还有局限性
发表于 2011-7-31 13:00:07 | 显示全部楼层
  1. @echo off
  2. Set n=1
  3. :hello
  4. For /l %%i in (1 1 %n%) do Set /p=1 <nul
  5. echo\
  6. Set /a n+=1
  7. if  %n% leq 10 goto hello
  8. pause >nul
复制代码
发表于 2011-7-31 13:50:46 | 显示全部楼层
回复 10# Hello123World


楼主不需要那些多余的空格
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 20:04 , Processed in 0.020402 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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