[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 如何在批处理脚本中获取 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:54 编辑

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

TOP

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

cmd /c %cmdinput%
或者
set /a sum=1+1
echo %sum% 或 set sum

TOP

先谢谢 楼上的回答

TOP

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

测试过了 不行

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

感觉。。。

TOP

回复 5# DeadCatMiMi


我感觉你的感觉是不对的
我感觉版主的感觉是对的

TOP

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

set/p cmdinput=
cmd /c %cmdinput%

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



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

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

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

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

不是更方便?为什么要set /a

TOP

回复 6# awk


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

TOP

返回列表