[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 批处理命令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的值,请问怎么表达啊?

  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
复制代码

TOP

@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)

TOP

@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
不用延迟变量,计这样也行。

TOP

回复 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

TOP

嗯,我弄错了。应把set b=s%a%  改成b=!s%a%!

TOP

回复 2# DAIC

我复制你的代码在我这里运行,结果提示:

[SC] EnumQueryServicesStatus:OpenService 失败 1060:
指定的服务未安装。
此时不应有 1>。

这是为什么?

TOP

回复 7# 437153


    可能是你复制错了吧,2楼的代码里面没有sc命令。

TOP

本帖最后由 437153 于 2014-12-19 16:05 编辑

回复 8# DAIC


    不好意思,真的是我复制错误了。
不过还有一个问题,这样只能采用call调用吗? 好像我试了在别的命令中无法试用,比如s0=192.168.1.1 ping %%!b!%% 运行结果不对。 一定要在ping的前面加上call 才行

TOP

回复 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
复制代码

TOP

回复 10# DAIC


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

TOP

返回列表