Board logo

标题: [数值计算] 如何在批处理脚本中获取 set/a 命令的回显输出? [打印本页]

作者: DeadCatMiMi    时间: 2011-12-6 21:11     标题: 如何在批处理脚本中获取 set/a 命令的回显输出?

  1. set/p cmdinput=
  2. set/a 1+1
  3. %cmdinput%
复制代码
以上代码 如果用 手工输入 可以得到 2

如果 写在 bat 里面
  1. set/p cmdinput=
  2. %cmdinput%
复制代码
然后输入 set/a 1+1 不能够显示 结果

请教解决方案!谢谢!
作者: CrLf    时间: 2011-12-6 21:52

本帖最后由 CrLf 于 2011-12-6 21:54 编辑

至少三个方案:
1、用 @prompt $_ 或 @prompt $M 等来代替 @echo off,即可获得 set /a、more 等命令的回显输出
2、将值赋为变量
3、用管道或 for /f 开启子 cmd 进程来执行这一段,并获取输出
作者: powerbat    时间: 2011-12-6 21:55

set /?
如果 SET /A 在命令脚本外的命令行执行的,那么它显示该表达式的最后值。

cmd /c %cmdinput%
或者
set /a sum=1+1
echo %sum% 或 set sum
作者: DeadCatMiMi    时间: 2011-12-6 22:31

先谢谢 楼上的回答
作者: DeadCatMiMi    时间: 2011-12-6 22:33

1、用 @prompt $_ 或 @prompt $M 等来代替 @echo off,即可获得 set /a、more 等命令的回显输出
2、将值赋为变量

测试过了 不行

cmd /c 是可以的 我之前也用这个 可惜 不能用在整个程序里面

感觉。。。
作者: awk    时间: 2011-12-7 10:47

回复 5# DeadCatMiMi


我感觉你的感觉是不对的
我感觉版主的感觉是对的
作者: slore    时间: 2011-12-7 12:29

对于楼顶的问题其实cmd /c这个帖子就结了。

set/p cmdinput=
cmd /c %cmdinput%

你要继续问,就对问题继续补充。。。。



至于你说不能用在整个程序中,你不妨把使用这种方法不能成功的那部分代码拿出来,看能否修正。

对于你的输入都是什么范围和格式。。。一定是 set /a开头后面是计算式么?
那你就自己截取表达式,自己算啊。

比如:
set /p cmdinput=
set /a val=%cmdinput%
echo %val%

用户可以直接输入数据5
或者输入表达式10+5

不是更方便?为什么要set /a
作者: CrLf    时间: 2011-12-7 15:41

回复 6# awk


    飙泪,我混乱了,3 楼是对的




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2