windows - 如何从Windows批处理文件中的动态变量中获取值

标签 windows batch-file

我使用的是 Microsoft Windows XP [版本 5.1.2600]

尝试这样做。

尝试动态创建变量,然后在循环中从该变量中读取值。

@ECHO off

SET SQL1=TEST
SET SQL2=TEST1
SET SQL3=TEST2
SET SQL=SQL
SETLOCAL ENABLEDELAYEDEXPANSION

SET /A number=0

FOR /l %%A IN (1,1,3) DO (

SET /A number = number + 1
echo !number!
    echo %SQL%!number!

)
endlocal

Output should be 
 1
 test
 2
 test2
 3
 test3
I am getting 
 C:\temp>c.bat
  1
  SQL1
  2
  SQL2
  3
  SQL3

请帮忙!

最佳答案

呃。

第一种方式(请注意,它使用循环计数器变量 %%A 而不是您的 number 变量):

@ECHO off

SET SQL1=TEST
SET SQL2=TEST1
SET SQL3=TEST2

SETLOCAL ENABLEDELAYEDEXPANSION

SET /A number=0

FOR /l %%A IN (1,1,3) DO (

SET /A number = number + 1
echo !number!
echo !SQL%%A!

)
endlocal

第二种方式(丑陋但它做你想要的):

@ECHO off

SET SQL1=TEST
SET SQL2=TEST1
SET SQL3=TEST2

SETLOCAL ENABLEDELAYEDEXPANSION

SET /A number=0

FOR /l %%A IN (1,1,3) DO (

SET /A number = number + 1
echo !number!
for %%i in (!number!) do (echo !SQL%%i!)

)
endlocal

关于windows - 如何从Windows批处理文件中的动态变量中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9999327/

相关文章:

windows - 通过批处理文件在 GIT 中创建修改文件的存档

windows - 以特定用户身份运行 Web 应用程序

python - 如何使用python运行带有参数的exe文件

windows - Windows 10 音频输入设备设置存储在哪里?

windows - 类似于批处理文件中的函数/方法?

batch-file - 使用默认浏览器批量打开网页

windows - 在 Windows 中从我的文件名中删除最后一个字符

c - 为什么 FindWindowEx 找不到 IP 地址窗口?

c++ - Win32API : How to determine if EN_CHANGE was because of user action, 不是软件 Action ?

batch-file - 如何使用 .bat 而不是追加到结尾使用文本文件添加到开头?