批处理 变量问题

这有一段批处理seta10b20=500setah=10setad=20setthh=a%ah%b%ad%if%thh%EQU500ECHO.OK!PAUSE请问各位高手... 这有一段批处理
set a10b20=500
set ah=10
set ad=20
set thh=a%ah%b%ad%
if %thh% EQU 500 ECHO.OK!
PAUSE

请问各位高手,执行这段代码时,
怎样才能使最后显示出OK来
也就是说%thh%的值要等于500.
在上面一段代码中的第四行里,等号右边的东西拼出来刚好是第一行定义的变量名,
现在想请问大家,如何才能使第四行等号右边的东西从字符串变成变量名,
这样,%thh%=%a10b20%=500 下面的条件自然就成立了。
展开
 我来答
四季守望
2013-02-14 · TA获得超过6129个赞
知道小有建树答主
回答量:1216
采纳率:57%
帮助的人:520万
展开全部
set thh=a%ah%b%ad%,你需要的是将a%ah%b%ad%的值存入thh,而不是这个字符串,所以你要在其两端加上%,但是%a%ah%b%ad%%会造成混乱,所以需要区分外层的%和内层的%。有两种方法。

一、可以开启环境变量迟缓,在a%ah%b%ad%两端各加上一个!,用!代替一个%,如下
@echo off
setlocal enabledelayedexpansion
set a10b20=500
set ah=10
set ad=20
set thh=!a%ah%b%ad%!
if %thh% equ 500 echo,OK!
pause

二、可以用call,然后在a%ah%b%ad%的两端各加上两个%,如下:
@echo off
set a10b20=500
set ah=10
set ad=20
call set thh=%%a%ah%b%ad%%%
if %thh% equ 500 echo.OK!
pause
wacs5
2013-02-14 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2927万
展开全部
@echo off&setlocal enabledelayedexpansion
set a10b20=500
set ah=10
set ad=20
set thh=a%ah%b%ad%
if !%thh%! EQU 500 ECHO.OK!
pause
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
依梦琴瑶
高粉答主

2013-02-13 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.6亿
展开全部
a10b20都已经定义为变量了,那么取变量值时就变成了 %a10b20%
但是a%ah%b%ad%得到的结果只是 a10b20 这个结果只是一个字符串值,根本不是变量 %a10b20%
所以条件无法成立 。
你这种变法完全是错误不起作用的,再说这种方法估计批处理无法实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b7958b559
2013-02-22
知道答主
回答量:54
采纳率:0%
帮助的人:24万
展开全部
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set a10b20=500
set ah=10
set ad=20
set thh=a%ah%b%ad%
if "!%thh%!" EQU "500" ECHO.OK!
PAUSE
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式