中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 问个问题bat怎么实现加减乘除!!
作者:
标题: 问个问题bat怎么实现加减乘除!! 上一主题 | 下一主题
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『楼 主』:  问个问题bat怎么实现加减乘除!!

如题!
『第 6 楼』:  

%a% + (1.88*%b%)=
%a% - (1.88*%b%)=
3.27*%b%=
%a%  %b% 表示 变量 怎么来写这个 bat

[ Last edited by mbllokmb on 2008-6-23 at 06:33 PM ]

2008-6-23 17:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hongewuyan
初级用户





积分 65
发帖 29
注册 2008-3-24
状态 离线
『第 2 楼』:  

通过 set /a 应该可以实现

可以看一下 set 的帮助,很仔细的.

2008-6-23 17:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  

请楼主参阅我的这个贴子,保证你能明白:
http://www.cn-dos.net/forum/view ... light=%2Bzw19750516



批处理之家新域名:www.bathome.net
2008-6-23 18:00
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 4 楼』:  

好的我看看 最好有个例子!!!

2008-6-23 18:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 5 楼』:  

呵呵 写的很好我仔细看下!!

2008-6-23 18:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 6 楼』:  

%a% + (1.88*%b%)=
%a% - (1.88*%b%)=
3.27*%b%=
%a%  %b% 表示 变量 怎么来写这个 bat

2008-6-23 18:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 7 楼』:  

没有可能了么?、??

2008-6-24 05:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hongewuyan
初级用户





积分 65
发帖 29
注册 2008-3-24
状态 离线
『第 8 楼』:  

昨天考虑了一下,单纯通过批处理命令来实现这种含有大量小数的运算,恐怕力不能及

因为近期在研究lua,如果通过调用lua的命令模式,就可以很容易得到结果了。

lua是开源的免费软件,可以在这里下载得到:
http://luabinaries.luaforge.net/download.html

可以直接下载编译好的,或者自行编译均可
通常下载http://luaforge.net/frs/download.php/3134/lua5_1_3_Win32_bin.zip即可

然后批处理代码如下:

@echo off
set path=%path%;path\to\your\lua\
set /p a="请输入a的数值:"
set /p b="请输入b的数值:"
echo 第一个计算项%a% + (1.88*%b%)的值为:
lua -e "print(%a%+(1.88*%b%))"
echo 第二个计算项%a% - (1.88*%b%)的值为:
lua -e "print(%a% - (1.88*%b%))"
echo 第三个计算项3.27*%b%的值为:
lua -e "print(3.27*%b%)"
pause>nul

说明:
path\to\your\lua\  请替换为你把下载后的lua解压存放的路径,方便调用
下载下的lua可执行文件默认为 lua5.1.exe ,我因为经常用到,所以为了方便输入改名为lua了,可酌情自行修改。

以上仅为举例,未对a、b值的输入做合法性判断。

2008-6-24 11:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 9 楼』:  

@echo off
set path=%path%;C:\mbll\lua.exe
set /p a="请输入a的数值:"
set /p b="请输入b的数值:"
echo 第一个计算项%a% + (1.88*%b%)的值为:
lua -e "print(%a%+(1.88*%b%))"
echo 第二个计算项%a% - (1.88*%b%)的值为:
lua -e "print(%a% - (1.88*%b%))"
echo 第三个计算项3.27*%b%的值为:
lua -e "print(3.27*%b%)"
pause>nul
是不是这样可是现示的是lua不是外部程序!!

2008-6-24 13:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hongewuyan
初级用户





积分 65
发帖 29
注册 2008-3-24
状态 离线
『第 10 楼』:  

set path=%path%;C:\mbll\lua.exe

这一行改成

set path=%path%;C:\mbll

2008-6-24 13:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 11 楼』:  

纯批也可以实现的,但很麻烦,如下:
@echo off&setlocal enabledelayedexpansion
rem 计算%a%*%b%的值
set a=42.36&set b=63.29
set "code=%a% %b%"
for %%i in (%code%) do call :lp %%i
set /a num1=_11*_21,num2=_12*_22
set num=%num1%%num2%
set num3=!num:~-%m%!
set num4=!num:%num3%=!
if %num2% neq 0 (
   echo %a%*%b%=!num4!.!num3!
   ) else (
   echo %a%*%b%=%num1%
)
pause>nul&goto :eof
:lp
set /a n+=1
for /f "tokens=1,2 delims=." %%i in ("%1") do set _%n%1=%%i&set _%n%2=%%j&set str=%%i
:loop
if defined str (
   set str=%str:~1%&set /a m+=1
   goto loop
)
ps:楼主可以随意修改这两个数值来测试。

[ Last edited by zw19750516 on 2008-6-24 at 03:04 PM ]



批处理之家新域名:www.bathome.net
2008-6-24 14:23
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 12 楼』:  

不是吧还不行!

@echo off
set path=%path%;C:\mbll
set /p a="请输入a的数值:"
set /p b="请输入b的数值:"
echo 第一个计算项%a% + (1.88*%b%)的值为:
lua -e "print(%a%+(1.88*%b%))"
echo 第二个计算项%a% - (1.88*%b%)的值为:
lua -e "print(%a% - (1.88*%b%))"
echo 第三个计算项3.27*%b%的值为:
lua -e "print(3.27*%b%)"
pause>nul

解压路径C:\mbll

运行bat后提示如下:

请输入a的数值:1
请输入b的数值:1
第一个计算项1 + (1.88*1)的值为:
'lua' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
第二个计算项1 - (1.88*1)的值为:
'lua' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
第三个计算项3.27*1的值为:
'lua' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

[ Last edited by mbllokmb on 2008-6-24 at 04:41 PM ]

2008-6-24 16:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 13 楼』:  

11楼的好是好但不能满足我的要求!! 呵呵

2008-6-24 16:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hongewuyan
初级用户





积分 65
发帖 29
注册 2008-3-24
状态 离线
『第 14 楼』:  

'lua' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
第二个计算项1 - (1.88*1)的值为:
'lua' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
第三个计算项3.27*1的值为:
'lua' 不是内部或外部命令,也不是可运行的程序
或批处理文件。


这说明你还是没有把lua放到系统路径里面。。。。
举例你把lua下载解压到 D:\LUA 这个目录下了
同时注意 把 lua5.1.ee 这个文件 重命名为 lua.exe  (不重命名也可以,修改上面命令里面相应文件名即可)

这时  set path=%path%;C:\mbll   应该为

set path=%path%;D:\LUA

2008-6-24 16:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: