![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-16 20:05 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,269 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 批处理计算1+2+3+4……100的值 |
| 可打印版本 5,271 / 21 |
| 第1楼 523066680 | 发表于 2008-02-24 12:48 |
| 银牌会员 发帖 1,133 积分 2,361 | |
|
批处理计算1+2+3+4……100的值 高一数学书必修三居然学编程……无奈……爽。好多数学题我都不能用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楼 523066680 | 发表于 2008-02-24 12:49 |
| 银牌会员 发帖 1,133 积分 2,361 | |
|
是像我这种菜菜学习for和set的好例子哦!
|
|
| 第3楼 523066680 | 发表于 2008-02-24 12:50 |
| 银牌会员 发帖 1,133 积分 2,361 | |
|
顺便在这里发我的原创批量重命名了哈 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 ) |
|
| 第4楼 everest79 | 发表于 2008-02-24 13:13 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
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楼 slore | 发表于 2008-02-24 14:06 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
直接用set /a n=(1+100)*100/2 太没趣。
汗~ 最好的算法。。。最快。 |
|
| 第6楼 523066680 | 发表于 2008-02-24 14:48 |
| 银牌会员 发帖 1,133 积分 2,361 | |
|
嘿嘿……探究精神,不可少……明明知道有简单的,还是要去做别的方法
|
|
| 第7楼 40szb | 发表于 2008-02-24 14:52 |
| 初级用户 发帖 21 积分 46 来自 西安 | |
|
好,学习了
|
|
| 第8楼 moniuming | 发表于 2008-02-24 14:55 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
@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楼 523066680 | 发表于 2008-02-24 15:18 |
| 银牌会员 发帖 1,133 积分 2,361 | |
|
楼上的代码好灵活啊……我学学
|
|
| 第10楼 slore | 发表于 2008-02-24 16:02 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
@echo off
for /l %%a in (1,1,100) do set /a a+=%%a echo %a% pause |
|
| 第11楼 523066680 | 发表于 2008-02-24 16:38 |
| 银牌会员 发帖 1,133 积分 2,361 | |
|
学习了……自愧中……不过还是学习了!
|
|
| 第12楼 523066680 | 发表于 2008-02-24 16:41 |
| 银牌会员 发帖 1,133 积分 2,361 | |
|
我想把11楼的代码弄的视觉一些,但是出现怪现象
@echo off for /l %%a in (1,1,100) do ( set /a a+=%%a echo.%a% ) pause |
|
| 第13楼 523066680 | 发表于 2008-02-24 16:45 |
| 银牌会员 发帖 1,133 积分 2,361 | |
|
又改了一下……可以了
@echo off setlocal ENABLEDELAYEDEXPANSION for /l %%a in (1,1,100) do (set /a a+=%%a &echo !a!) pause |
|
| 第14楼 523066680 | 发表于 2008-02-24 16:52 |
| 银牌会员 发帖 1,133 积分 2,361 | |
|
九楼的代码我理解不了啊……谁愿意解释下,这里谢谢了
|
|
| 第15楼 523066680 | 发表于 2008-03-01 18:19 |
| 银牌会员 发帖 1,133 积分 2,361 | |
|
怎么每人离我啊……教下啊!
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |