
批处理 变量问题
这有一段批处理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 下面的条件自然就成立了。 展开
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 下面的条件自然就成立了。 展开
4个回答
展开全部
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
一、可以开启环境变量迟缓,在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
展开全部
@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
set a10b20=500
set ah=10
set ad=20
set thh=a%ah%b%ad%
if !%thh%! EQU 500 ECHO.OK!
pause
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a10b20都已经定义为变量了,那么取变量值时就变成了 %a10b20%
但是a%ah%b%ad%得到的结果只是 a10b20 这个结果只是一个字符串值,根本不是变量 %a10b20%
所以条件无法成立 。
你这种变法完全是错误不起作用的,再说这种方法估计批处理无法实现。
但是a%ah%b%ad%得到的结果只是 a10b20 这个结果只是一个字符串值,根本不是变量 %a10b20%
所以条件无法成立 。
你这种变法完全是错误不起作用的,再说这种方法估计批处理无法实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@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
SETLOCAL ENABLEDELAYEDEXPANSION
set a10b20=500
set ah=10
set ad=20
set thh=a%ah%b%ad%
if "!%thh%!" EQU "500" ECHO.OK!
PAUSE
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询