找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26280|回复: 7

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

[复制链接]
发表于 2011-12-6 21:11:33 | 显示全部楼层 |阅读模式
  1. set/p cmdinput=
  2. set/a 1+1
  3. %cmdinput%
复制代码
以上代码 如果用 手工输入 可以得到 2

如果 写在 bat 里面
  1. set/p cmdinput=

  2. %cmdinput%
复制代码
然后输入 set/a 1+1 不能够显示 结果

请教解决方案!谢谢!
发表于 2011-12-6 21:52:48 | 显示全部楼层
本帖最后由 CrLf 于 2011-12-6 21:54 编辑

至少三个方案:
1、用 @prompt $_ 或 @prompt $M 等来代替 @echo off,即可获得 set /a、more 等命令的回显输出
2、将值赋为变量
3、用管道或 for /f 开启子 cmd 进程来执行这一段,并获取输出
发表于 2011-12-6 21:55:34 | 显示全部楼层
set /?
如果 SET /A 在命令脚本外的命令行执行的,那么它显示该表达式的最后值。

cmd /c %cmdinput%
或者
set /a sum=1+1
echo %sum% 或 set sum
 楼主| 发表于 2011-12-6 22:31:05 | 显示全部楼层
先谢谢 楼上的回答
 楼主| 发表于 2011-12-6 22:33:02 | 显示全部楼层
1、用 @prompt $_ 或 @prompt $M 等来代替 @echo off,即可获得 set /a、more 等命令的回显输出
2、将值赋为变量

测试过了 不行

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

感觉。。。
发表于 2011-12-7 10:47:47 | 显示全部楼层
回复 5# DeadCatMiMi


我感觉你的感觉是不对的
我感觉版主的感觉是对的
发表于 2011-12-7 12:29:53 | 显示全部楼层
对于楼顶的问题其实cmd /c这个帖子就结了。

set/p cmdinput=
cmd /c %cmdinput%

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



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

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

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

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

不是更方便?为什么要set /a
发表于 2011-12-7 15:41:08 | 显示全部楼层
回复 6# awk


    飙泪,我混乱了,3 楼是对的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 10:01 , Processed in 0.018084 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表