中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-01 20:08
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理中如何进行数值运算呀 查看 1,010 回复 6
楼 主 批处理中如何进行数值运算呀 发表于 2006-02-15 17:40 ·  中国 陕西 移动(全省通用)
新手上路
积分 8
发帖 2
注册 2006-02-15 17:35
20年会员
UID 50409
状态 离线
批处理中怎样进行加减乘除的数值运算呢?
我从文本中取了一个变量,比如说T,取值为19,怎样能给另外一个变量X赋值为18,也就是X=T-1,或者进行其他的运算?
请大家帮帮忙啦
2 发表于 2006-02-15 19:22 ·  中国 辽宁 锦州 中移铁通
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
21年会员
UID 40733
性别 男
状态 离线
用 set /a 直接计算就可以了。
例:
set t=19
set /a x=t-1
其他计算类似,详情见 set /?
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

3 发表于 2006-02-16 08:46 ·  中国 陕西 移动(全省通用)
新手上路
积分 8
发帖 2
注册 2006-02-15 17:35
20年会员
UID 50409
状态 离线
谢谢啦
4 发表于 2006-02-18 07:39 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
题目:将1-9这9个数字分成三个3位数,要求分出的第一个3位数,正好是第二个三位数的二倍,是第三个3位数的三倍。
@echo off
setlocal
if exist cxs.txt del cxs.txt
if exist startup.txt echo y | del startup.txt
if exist process.txt echo y | del process.txt
set /a var1 = 2
set /a var2 = 1
set /a var3 = 2
set /a i = 0
echo 运算结果: >> cxs.txt

:cxs
if "%var2%"=="10" set /a var3 = %var3% + 2 && set /a var2 = 1 && goto cxs
if "%var3%"=="10" set /a var1 = %var1% + 1 && set /a var3 = 2 && goto cxs
if "%var1%"=="7" goto exit
set /a var2 = %var2% + 1
if "%var1%"=="%var2%" goto cxs
if "%var1%"=="%var3%" goto cxs
if "%var2%"=="%var3%" goto cxs

set /a i = %i% + 1
set /a number = %i% * 100 / 120
cls
echo 当前进度:..........%number%%%

set /a tmp2 = %var1% * 100 + %var2% * 10 + %var3%
set /a tmp1 = %tmp2% / 2
set /a tmp3 = %tmp1% * 3

echo %tmp1%%tmp2%%tmp3% | find "1" || goto cxs
echo %tmp1%%tmp2%%tmp3% | find "2" || goto cxs
echo %tmp1%%tmp2%%tmp3% | find "3" || goto cxs
echo %tmp1%%tmp2%%tmp3% | find "4" || goto cxs
echo %tmp1%%tmp2%%tmp3% | find "5" || goto cxs
echo %tmp1%%tmp2%%tmp3% | find "6" || goto cxs
echo %tmp1%%tmp2%%tmp3% | find "7" || goto cxs
echo %tmp1%%tmp2%%tmp3% | find "8" || goto cxs
echo %tmp1%%tmp2%%tmp3% | find "9" || goto cxs

set /a nums = %tmp1%%tmp2%%tmp3%
echo %tmp3%,%tmp2%,%tmp1% >> cxs.txt

set /a tmp1 = 0
set /a tmp2 = 0
set /a tmp3 = 0
goto cxs

:exit
cls
echo 共计算了%i%次. >> cxs.txt
endlocal


echo ************************* >>cxs.txt
echo 孤狗 QQ:3742668 >>cxs.txt
echo ************************* >>cxs.txt
exit

电脑报第36期编程魔方的题目。
用CMD写了一个,带进度条显示,本来还有一些系统检查的功能的,这里去掉了。其实不用那么多代码的,只不过为了减少运算的次数提高效率以及显示进度等等才多了不少行。。。

[ Last edited by 3742668 on 2006-2-18 at 07:40 ]
5 发表于 2006-02-18 20:23 ·  中国 广东 肇庆 端州区 电信
中级用户
★★
积分 384
发帖 189
注册 2005-10-19 13:12
20年会员
UID 43709
性别 男
状态 离线
从4楼中又学到了点东西.....
6 发表于 2006-02-18 22:21 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
见笑了,呵呵,其实这个东东还可以简化,只是当时水平有限,不堪入目之处希望老鸟们不要见笑。。。
7 发表于 2006-06-26 20:57 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
20年会员
UID 46459
状态 离线
对于我等菜鸟来说,这里是高手如云滴.
论坛跳转: