Board logo

标题: [文本处理] 批处理for和if 嵌套的相关问题 [打印本页]

作者: 小白白    时间: 2023-3-9 10:40     标题: 批处理for和if 嵌套的相关问题

检测硬盘分区
  1. @echo off
  2. set str=c d e f g h i j k l m n o p q r s t u v w x y z
  3. echo 当前硬盘的分区有:
  4. for %%i in (%str%) do if exist %%i: echo %%i:
  5. pause
复制代码
以上的代码,为什么明明 c-Z都赋值给了 %str%。后面判断 %%i  存在的时候会不一样呢

麻烦大佬们指导一下
作者: 77七    时间: 2023-3-9 11:07

我猜测你是没了解代码的意思,你想把c-z全打印出来?
这个是判断硬盘分区是否存在的批处理,当%%i 值为c 时 "%%i:" 表示c盘,如果存在c盘 就打印c:
作者: Batcher    时间: 2023-3-9 11:17

回复 1# 小白白


这样能理解吗:
  1. @echo off
  2. set str=c d e f g h i j k l m n o p q r s t u v w x y z
  3. echo 当前硬盘的分区有:
  4. for %%i in (%str%) do (
  5.     echo --- 正在判断 %%i: 是否存在
  6.     if exist %%i: (
  7.         echo %%i:
  8.     )
  9. )
  10. pause
复制代码

作者: 小白白    时间: 2023-3-10 11:33

回复 2# 77七


    当%%i 值为c 时 "%%i:" 表示c盘----这个%%i 为什么代表的是C盘呢?而不是C盘里面的文件,还有程序怎么么判断我的硬盘有没有C盘
作者: 77七    时间: 2023-3-10 12:25

本帖最后由 77七 于 2023-3-10 12:43 编辑

回复 4# 小白白


  就是判断 c: 这个驱动器是否存在,如果存在,就代表你的电脑有c盘
你可以参考下面的帖子,先了解一下基础知识
浅谈批处理命令for中的变量扩展
为什么 c:代表 c盘,不代表 名为 c: 的文件 大概是因为不会存在名为  c:  的文件 你可以尝试创建一个试试




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