Board logo

标题: [已解决]批处理命令for如何获取目录后设置为独立变量(将变量值作为变量名)? [打印本页]

作者: 极品小猫    时间: 2012-8-15 20:55     标题: [已解决]批处理命令for如何获取目录后设置为独立变量(将变量值作为变量名)?

测试环境: R盘下有 a b c d 四个文件夹(文件夹数量不固定, 此处仅为例子)
目的: 通过 for 获取这些文件夹并对每个文件夹设置一个变量(对应为1 2 3 4), 以便批处理后面通过这些变量来输出显示.


其实就是想使用变量的值来作为下一个变量名, 同时这一个变量存入获取到的文件夹名.
PS: 目的需要不产生临时文件

解决方法
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. for /f %%i in ('dir /b /ad') do (
  4. set /a num+=1
  5. set !num!=%%i
  6. echo !num!. %%i
  7. )
  8. echo,
  9. set /p i=请输入要操作的用户目录编号:
  10. echo !%i%!
  11. ENDLOCAL
  12. pause
复制代码

作者: qwe274208829    时间: 2012-8-16 12:26

借个地方
请问for后面的变量(例如%%1)是什么意思
作者: 极品小猫    时间: 2012-8-16 13:07

借个地方
请问for后面的变量(例如%%1)是什么意思
qwe274208829 发表于 2012-8-16 12:26


和示例的 %%i 一样, 没有差别, 都是自定义的变量
For详细的教程看这里 http://www.bathome.net/viewthread.php?tid=2189&from=favorites
作者: qwe274208829    时间: 2012-8-16 22:37

回复 3# 极品小猫


    哦
         think
作者: 悬崖之树    时间: 2012-8-18 17:26

下面的代码可以实现把变量值作为变量名
  1. @echo off
  2. set a=abc
  3. set %a%=520
  4. echo %abc%
  5. pause
复制代码

作者: 悬崖之树    时间: 2012-8-18 17:32

还有更高级的:
  1. @echo off & setlocal ENABLEDELAYEDEXPANSION
  2. set a=abc
  3. set %a%=520
  4. echo !%a%!
  5. pause
复制代码

作者: 极品小猫    时间: 2012-8-18 19:16

本帖最后由 极品小猫 于 2012-8-18 19:39 编辑
还有更高级的:
悬崖之树 发表于 2012-8-18 17:32



    感谢你的回复, 其实你这两段代码我都明白. 看到 echo !%a%! 我才想起原来是我后面的代码存在引用问题.
哈 ~ 脑子卡壳在 for 那里了




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