中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-02 01:44
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理计算1+2+3+4……100的值 查看 4,686 回复 21
楼 主 批处理计算1+2+3+4……100的值 发表于 2008-02-24 12:48 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
高一数学书必修三居然学编程……无奈……爽。好多数学题我都不能用bat做
很不爽,所以选了一道好点的,1+2+3……100貌似简单,但还是要用上点技巧的。直接用set /a n=(1+100)*100/2 太没趣。写了代码

@echo off
set a=0
set b=0
:a
echo.+%a%=%b%
set /a a+=1
set /a b=%b%+%a%
if %a% gtr 100 (pause) else (goto :a)
exit

::结合了for的
@echo off
setlocal ENABLEDELAYEDEXPANSION
set b=0
for /l %%a in (1,1,100) do (
set /a b=%%a+!b!
echo %%a !b!
)
pause

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\这个比较视觉感

@echo off
set /a a=1,b=0
:a
set b=%b%+%a%
set /a a+=1
echo %b%
ping -n 1 127.0>nul
cls
if %a% gtr 100 (goto :b) else (goto :a)
:b
set /a c=%b%
echo.%b%=%c%
pause

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\2

@echo off
set /a a=1,b=0
:a
set b=%b% +%a%
set /a a+=1
echo %b%
cls
if %a% gtr 100 (goto :b) else (goto :a)
:b
set /a c=%b%
echo.%b%=%c%
pause
2 发表于 2008-02-24 12:49 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
是像我这种菜菜学习for和set的好例子哦!
3 顺便在这里发我的原创批量重命名了哈 发表于 2008-02-24 12:50 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
cn-dos论坛看到好多好的批量重命名批处理,但高手们都用上了set …… 我不懂,所以做了自己看得懂的,不过效率就比较低了。没有用上set命令哦!

\\\\\\\\\\\\\\\\\\\\\\\\\\\批量重命名1.bat \\\\\\\\\\\\\\\(重命名为1 2 3 ……10 11 这类的)

@echo off
ren *.jpg *.[jpg]
for /l %%a in (1,1,10000) do (
ren *.[jpg] final-%%a.jpg
if not exist *.[jpg] cls &color 0b &echo OK!! &pause &exit
)

\\\\\\\\\\\\\\\\\\\\\\\\\\\批量重命名2.bat \\\\\\\\\\\\\\\ (重命名为001 002 003 ……这类的)

@echo off
ren *.jpg *.[jpg]
for %%a in (0 1 2 3 4 5 6 7 8 9) do (
for %%b in (0 1 2 3 4 5 6 7 8 9) do (
for %%c in (0 1 2 3 4 5 6 7 8 9) do (
color %%b%%c
ren *.[jpg] final-%%a%%b%%c.jpg
if not exist *.[jpg] cls &color 0b &echo OK!! &pause &exit
)
)
)


\\\\\\\\\\\\\\\\\\\\\\\\\批量重命名终版.bat \\\ (可以自己现则类型,文件类型,重命名序号的开头,如a001,a002)

::如有不足之处(可以做到改善的) 欢迎来投诉或改正 hi.baidu.com/523066680

@echo off
mode con cols=77 lines=12
title 某批处理初学者 hi.baidu.com/523066680
color 0b

::======================================================================

echo.
echo.步骤一、在这里输入新文件名的开头 可直接回车(即命名为000 001 002)或(0 1 2)
echo. 如输入a 则会重命名为a000 a001 a002.....或 a0 a1 a2......
echo.
echo.不支持特殊符号 ^> ^< ^\ ^/ ^? ^" ^: ^| ^* 输入名字后不能输空格,该批处理不判断.
echo.
set /p no1=请输入:

::======================================================================

cls
echo.
echo.步骤二、在这里输入将被重命名文件的格式
echo.
echo.
echo.不支持特殊符号 ^> ^< ^\ ^/ ^? ^" ^: ^| ^* 空格,或是直接回车。该批处理不判断.
echo.&echo.
set /p no2=请输入:
if not exist *.%no2% (cls &echo 不存在%no2%格式的文件,请正确输入,按任意键退出 &pause>nul &exit)
if /i %no2%==bat (cls &echo 不支持重命名bat格式文件(本文件会被重命名,导致....) &pause &exit)
cls

::======================================================================

:Second
cls
echo.执行的时候显示“存在一个重名文件,或是找不到文件”请不要马上关闭,等待执行
echo.
echo.选择模式a:重命名成000 001 002,限制为999个文件(可更改)
echo.选择模式b:重命名为1 2 3 4 5 ....,限制为10000个文件(可更改)
echo.
set /p action="在此输入:"
if /i "%action%"=="a" (goto :ren1-1)
if /i "%action%"=="b" (goto :ren2-1) else (goto :second)

::======================================================================


:ren1-1
cls
ren *.%no2% *.[%no2%]

for %%a in (0 1 2 3 4 5 6 7 8 9) do (
for %%b in (0 1 2 3 4 5 6 7 8 9) do (
for %%c in (0 1 2 3 4 5 6 7 8 9) do (
color %%b%%c &title %%a%%b%%c.%no2%
echo. %no1%%%a%%b%%c.%no2%
ren *.[%no2%] %no1%%%a%%b%%c.%no2%>nul 2>nul
if not exist *.[%no2%] cls &color 0b &echo OK!! &pause &exit
)
)
)

::=======================================================================

:ren2-1
ren *.%no2% *.[%no2%]
for /l %%a in (1,1,10000) do (
echo. %no1%%%a%no2%
ren *.[%no2%] %no1%%%a.%no2%>nul 2>nul
if not exist *.[%no2%] cls &color 0b &echo OK!! &pause &exit
)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
abcd +3 2008-02-24 12:52
4 发表于 2008-02-24 13:13 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
FOR /L %variable IN (start,step,end) DO command [command-parameters]

该集表示以增量形式从开始到结束的一个数字序列。
因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生
序列 (5 4 3 2 1)。
5 发表于 2008-02-24 14:06 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
直接用set /a n=(1+100)*100/2 太没趣。

汗~
最好的算法。。。最快。
6 发表于 2008-02-24 14:48 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
嘿嘿……探究精神,不可少……明明知道有简单的,还是要去做别的方法
7 发表于 2008-02-24 14:52 ·  中国 广东 佛山 电信
初级用户
积分 46
发帖 21
注册 2006-12-25 14:28
19年会员
UID 74536
性别 男
来自 西安
状态 离线
好,学习了
8 发表于 2008-02-24 14:55 ·  中国 北京 华为云
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
@echo off
set aa=0
for /l %%a in (1,1,100) do (
call :aaa %%a
)
pause
goto :eof
:aaa
set /a aa=%1+%aa%
echo %aa%
9 发表于 2008-02-24 15:18 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
楼上的代码好灵活啊……我学学
10 发表于 2008-02-24 16:02 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
@echo off
for /l %%a in (1,1,100) do set /a a+=%%a
echo %a%
pause
11 发表于 2008-02-24 16:38 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
学习了……自愧中……不过还是学习了!
12 发表于 2008-02-24 16:41 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
我想把11楼的代码弄的视觉一些,但是出现怪现象
@echo off
for /l %%a in (1,1,100) do (
set /a a+=%%a
echo.%a%
)
pause
13 发表于 2008-02-24 16:45 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
又改了一下……可以了
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /l %%a in (1,1,100) do (set /a a+=%%a &echo !a!)
pause
14 发表于 2008-02-24 16:52 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
九楼的代码我理解不了啊……谁愿意解释下,这里谢谢了
15 发表于 2008-03-01 18:19 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
怎么每人离我啊……教下啊!
论坛跳转: