标题: [数值计算] 如何利用批处理控制数字个数? [打印本页]
作者: 1130342432 时间: 2011-7-29 09:58 标题: 如何利用批处理控制数字个数?
我们可以利用set /a 来进行数字的递加或递减,如
10
12
14
16
18
……
但假如要实现如下结果:
1
11
111
1111
11111
……
该怎么办?
作者: CUer 时间: 2011-7-29 10:52
- @echo off
- for /l %%a in (1,1,5) do (
- for /l %%b in (1,1,%%a) do (
- set /p "=1"<nul
- )
- echo,
- )
- pause
复制代码
作者: 1130342432 时间: 2011-7-29 11:07
回复 2# CUer
高手啊 等我好好研究研究 谢谢
作者: 1130342432 时间: 2011-7-29 11:51
回复 2# CUer
能给我解释下吗?
看不懂~~~~~~~~~~~
作者: CUer 时间: 2011-7-29 11:56
- @echo off
- setlocal enabledelayedexpansion
- set "n="
- for /l %%a in (1,1,5) do (
- set n=1!n!
- echo,!n!
- )
- pause
复制代码
作者: CUer 时间: 2011-7-29 11:57
回复 4# 1130342432
两层for循环
外层循环用来控制输出几行
内存循环用来控制每行输出几个1
作者: CUer 时间: 2011-7-29 12:25
- @echo off
- setlocal enabledelayedexpansion
- set "str=1111111111"
- for /l %%a in (1,1,5) do (
- echo,!str:~0,%%a!
- )
- pause
复制代码
作者: CrLf 时间: 2011-7-29 12:51
本帖最后由 CrLf 于 2011-7-29 12:56 编辑
set /p 不换行附加和 set 修改变量的思路 cuer 已经讲过了,我提供另外两种算法
纯计算也可以,不过效率和通用性不如直接用 set 为变量附加数值:- @echo off&setlocal enabledelayedexpansion
- set n=111
- for /l %%a in (1 1 6) do (
- set /a n=n*10+n%%10
- echo !n!
- )
- pause
复制代码
另外一种算法是事先定义一个值,再用变量偏移来输出,这是效率极高的方案,个人比较偏爱:- @echo off&setlocal enabledelayedexpansion
- set n=11111111111111
- for /l %%a in (1 1 10) do echo !n:~0,%%a!
- pause
复制代码
作者: lfoqtal 时间: 2011-7-29 15:30
看了楼上的代码其实就是因为数字的规律性当做文本来处理就很容易了,如果当成数字来计算就复杂化了,还有局限性
作者: Hello123World 时间: 2011-7-31 13:00
- @echo off
- Set n=1
- :hello
- For /l %%i in (1 1 %n%) do Set /p=1 <nul
- echo\
- Set /a n+=1
- if %n% leq 10 goto hello
- pause >nul
复制代码
作者: CUer 时间: 2011-7-31 13:50
回复 10# Hello123World
楼主不需要那些多余的空格
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |