Board logo

标题: [数值计算] 批处理命令echo怎样显示变量中变量名的值? [打印本页]

作者: 437153    时间: 2014-12-5 15:33     标题: 批处理命令echo怎样显示变量中变量名的值?

  1. @ECHO OFF
  2. set a=0
  3. :kaishi
  4. set b=s%a%
  5. set s0=000000
  6. set s1=111111
  7. `
  8. `
  9. `
  10. set s9=999999
  11. echo %b%
  12. set /a a=%a%+1
  13. if %a% GTR 9 (goto kaishi) else (exit)
复制代码
我这里希望得到的结果是echo显示变量s0的值,请问怎么表达啊?
作者: DAIC    时间: 2014-12-5 22:13

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set s0=000000
  4. set a=0
  5. set b=s%a%
  6. call echo %%!b!%%
  7. 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
  1. @ECHO OFF
  2. setlocal enabledelayedexpansion
  3. set a=0
  4. :kaishi
  5. set b=s%a%
  6. set s0=000000
  7. set s1=111111
  8. 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
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set s0=192.168.1.1
  4. set a=0
  5. set b=s%a%
  6. call set n=%%!b!%%
  7. ping %n%
  8. pause
复制代码

作者: 437153    时间: 2014-12-22 14:22

回复 10# DAIC


    多谢了。又学会一招,还挺实用的。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2