找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19401|回复: 6

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

[复制链接]
发表于 2012-8-15 20:55:48 | 显示全部楼层 |阅读模式
测试环境: 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
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-8-16 12:26:04 | 显示全部楼层
借个地方
请问for后面的变量(例如%%1)是什么意思
 楼主| 发表于 2012-8-16 13:07:20 | 显示全部楼层
借个地方
请问for后面的变量(例如%%1)是什么意思
qwe274208829 发表于 2012-8-16 12:26


和示例的 %%i 一样, 没有差别, 都是自定义的变量
For详细的教程看这里 http://www.bathome.net/viewthread.php?tid=2189&from=favorites
发表于 2012-8-16 22:37:07 | 显示全部楼层
回复 3# 极品小猫


    哦
         think
发表于 2012-8-18 17:26:56 | 显示全部楼层
下面的代码可以实现把变量值作为变量名
  1. @echo off
  2. set a=abc
  3. set %a%=520
  4. echo %abc%
  5. pause
复制代码
发表于 2012-8-18 17:32:43 | 显示全部楼层
还有更高级的:
  1. @echo off & setlocal ENABLEDELAYEDEXPANSION
  2. set a=abc
  3. set %a%=520
  4. echo !%a%!
  5. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
极品小猫 + 1 echo !%a%! 提醒了我变量引用的问题

查看全部评分

 楼主| 发表于 2012-8-18 19:16:28 | 显示全部楼层
本帖最后由 极品小猫 于 2012-8-18 19:39 编辑
还有更高级的:
悬崖之树 发表于 2012-8-18 17:32



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

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 10:12 , Processed in 0.020540 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表