Board logo

标题: [文本处理] 请问BAT如何正确输出含有变量的变量值? [打印本页]

作者: suseek    时间: 2013-10-18 20:29     标题: 请问BAT如何正确输出含有变量的变量值?

各位高手,下面这段程序为何不能输出变量值,谢谢
  1. @echo off&setlocal enabledelayedexpansion
  2.      for /f "delims=" %%i in ( 5.txt ) do (            
  3.                         set n=0
  4.                    for  %%j in (%%i) do (
  5.                     
  6.                             set /a n+=1
  7.                           set  ar[!n!]=%%j
  8.                          echo !ar[%n%]!                           
  9.                  
  10.                        )                                                      
  11. )
  12. pause
复制代码

作者: suseek    时间: 2013-10-18 20:48

就是为什么echo !ar[%n%]! 出现错误,如何引用ar[n]的值
作者: foxJL    时间: 2013-10-18 22:28

  1. call echo %%ar[!n!]%%
复制代码

作者: suseek    时间: 2013-10-19 08:03

请问FOXJL,为什么此处要用CALL ECHO 并用双%?
作者: batman    时间: 2013-10-19 10:03

本帖最后由 batman 于 2013-10-19 10:05 编辑

建议用FOR来嵌套变量
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ( 5.txt ) do (            
  3.   set /a n=0
  4.   for %%j in (%%i) do (        
  5.     set /a n+=1
  6.     for %%k in (!n!) do (
  7.       set "ar[%%k]=%%j"
  8.       echo,!ar[%%k]!                 
  9.     )
  10.   )                                                      
  11. )
  12. pause
复制代码

作者: foxJL    时间: 2013-10-19 11:47

回复 4# suseek


延伸阅读<批处理中的变量嵌套变量用法>
http://bbs.bathome.net/thread-2900-1-1.html

使用call会影响批处理的工作效率,也就是会变慢一点.但我个人觉得效率都是相对的,对比人手动去完成工作来说用批处理会快得太多了.从实用的角度我都是怎么简单怎么来,又不是大型项目没必要太在意那么一点点效率.
作者: shanshui435    时间: 2013-10-19 19:16

5634534尔特突然




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