楼 主
问个问题bat怎么实现加减乘除!!
发表于 2008-06-23 17:51 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
初级用户
★
积分 78 发帖 39 注册 2008-06-20 06:03 18年会员 UID 120614 性别 男
状态 离线
如题!
『第 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 ]
第 2 楼
发表于 2008-06-23 17:52 · IANA 局域网IP(Private-Use)
初级用户
★
积分 65 发帖 29 注册 2008-03-24 12:17 18年会员 UID 113853 性别 男
状态 离线
通过 set /a 应该可以实现
可以看一下 set 的帮助,很仔细的.
第 3 楼
发表于 2008-06-23 18:00 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 18年会员 UID 112398 性别 男
状态 离线
第 4 楼
发表于 2008-06-23 18:00 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
初级用户
★
积分 78 发帖 39 注册 2008-06-20 06:03 18年会员 UID 120614 性别 男
状态 离线
第 5 楼
发表于 2008-06-23 18:02 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
初级用户
★
积分 78 发帖 39 注册 2008-06-20 06:03 18年会员 UID 120614 性别 男
状态 离线
第 6 楼
发表于 2008-06-23 18:25 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
初级用户
★
积分 78 发帖 39 注册 2008-06-20 06:03 18年会员 UID 120614 性别 男
状态 离线
%a% + (1.88*%b%)=
%a% - (1.88*%b%)=
3.27*%b%=
%a% %b% 表示 变量 怎么来写这个 bat
第 7 楼
发表于 2008-06-24 05:52 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
初级用户
★
积分 78 发帖 39 注册 2008-06-20 06:03 18年会员 UID 120614 性别 男
状态 离线
第 8 楼
发表于 2008-06-24 11:19 · IANA 局域网IP(Private-Use)
初级用户
★
积分 65 发帖 29 注册 2008-03-24 12:17 18年会员 UID 113853 性别 男
状态 离线
昨天考虑了一下,单纯通过批处理命令来实现这种含有大量小数的运算,恐怕力不能及
因为近期在研究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值的输入做合法性判断。
第 9 楼
发表于 2008-06-24 13:09 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
初级用户
★
积分 78 发帖 39 注册 2008-06-20 06:03 18年会员 UID 120614 性别 男
状态 离线
@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不是外部程序!!
第 10 楼
发表于 2008-06-24 13:39 · IANA 局域网IP(Private-Use)
初级用户
★
积分 65 发帖 29 注册 2008-03-24 12:17 18年会员 UID 113853 性别 男
状态 离线
set path=%path%;C:\mbll\lua.exe
这一行改成
set path=%path%;C:\mbll
第 11 楼
发表于 2008-06-24 14:23 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 18年会员 UID 112398 性别 男
状态 离线
纯批也可以实现的,但很麻烦,如下:
@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
第 12 楼
发表于 2008-06-24 16:30 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
初级用户
★
积分 78 发帖 39 注册 2008-06-20 06:03 18年会员 UID 120614 性别 男
状态 离线
不是吧还不行!
@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 ]
第 13 楼
发表于 2008-06-24 16:47 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
初级用户
★
积分 78 发帖 39 注册 2008-06-20 06:03 18年会员 UID 120614 性别 男
状态 离线
第 14 楼
发表于 2008-06-24 16:56 · IANA 局域网IP(Private-Use)
初级用户
★
积分 65 发帖 29 注册 2008-03-24 12:17 18年会员 UID 113853 性别 男
状态 离线
'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
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正