标题: [数值计算] 批处理命令echo怎样显示变量中变量名的值? [打印本页]
作者: 437153 时间: 2014-12-5 15:33 标题: 批处理命令echo怎样显示变量中变量名的值?
- @ECHO OFF
- set a=0
- :kaishi
- set b=s%a%
- set s0=000000
- set s1=111111
- `
- `
- `
- set s9=999999
-
-
- echo %b%
- set /a a=%a%+1
- if %a% GTR 9 (goto kaishi) else (exit)
复制代码
我这里希望得到的结果是echo显示变量s0的值,请问怎么表达啊?
作者: DAIC 时间: 2014-12-5 22:13
- @echo off
- setlocal enabledelayedexpansion
- set s0=000000
- set a=0
- set b=s%a%
- call echo %%!b!%%
- pause
复制代码
作者: yiwuyun 时间: 2014-12-6 09:52
@ECHO OFF
setlocal enabledelayedexpansion
set a=0
:kaishi
set b=s%a%
set s0=000000
set s1=111111
`
`
`
set s9=999999
echo !b!
set /a a=%a%+1
if %a% leq 9 (goto kaishi) else (exit)
作者: yiwuyun 时间: 2014-12-6 10:26
@echo off
set s0=000000
set s1=111111
set a=0
:start
set b=s%a%
set /a a+=1
call echo %%%b%%%
if %a% lss 2 goto startpause
不用延迟变量,计这样也行。
作者: DAIC 时间: 2014-12-6 10:42
回复 3# yiwuyun - @ECHO OFF
- setlocal enabledelayedexpansion
- set a=0
- :kaishi
- set b=s%a%
- set s0=000000
- set s1=111111
- echo !b!
复制代码
我用你这个代码测试的时候,输出的结果是s0,而不是楼主希望的000000
作者: yiwuyun 时间: 2014-12-6 12:31
嗯,我弄错了。应把set b=s%a% 改成b=!s%a%!
作者: 437153 时间: 2014-12-18 09:43
回复 2# DAIC
我复制你的代码在我这里运行,结果提示:
[SC] EnumQueryServicesStatus:OpenService 失败 1060:
指定的服务未安装。
此时不应有 1>。
这是为什么?
作者: DAIC 时间: 2014-12-18 10:33
回复 7# 437153
可能是你复制错了吧,2楼的代码里面没有sc命令。
作者: 437153 时间: 2014-12-19 15:54
本帖最后由 437153 于 2014-12-19 16:05 编辑
回复 8# DAIC
不好意思,真的是我复制错误了。
不过还有一个问题,这样只能采用call调用吗? 好像我试了在别的命令中无法试用,比如s0=192.168.1.1 ping %%!b!%% 运行结果不对。 一定要在ping的前面加上call 才行
作者: DAIC 时间: 2014-12-19 16:17
回复 9# 437153 - @echo off
- setlocal enabledelayedexpansion
- set s0=192.168.1.1
- set a=0
- set b=s%a%
- call set n=%%!b!%%
- ping %n%
- pause
复制代码
作者: 437153 时间: 2014-12-22 14:22
回复 10# DAIC
多谢了。又学会一招,还挺实用的。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |