Board logo

标题: [其他] 【已解决】批处理如何判断特定卷标是否存在? [打印本页]

作者: 青青草    时间: 2024-8-24 10:03     标题: 【已解决】批处理如何判断特定卷标是否存在?

本帖最后由 青青草 于 2024-8-24 21:40 编辑

批处理如何判断驱动器(有盘符)特定卷标(如DISK)是否存在?如果存在,则执行命令1,如果不存在,则执行命令2。
请哪位大神赐教!
谢谢!
作者: ppll2030    时间: 2024-8-24 12:06

首先,存在如何定义?
单纯的以分配有盘符而视为存在?
还是说只要有ESP分区,就算其无盘符,被隐藏了,也视为存在?

其次,
echo list vol | diskpart
可以查看本机下所有分区,包含无盘符的分区。
接下来就看楼主怎么定义了。
作者: 青青草    时间: 2024-8-24 12:08

本帖最后由 青青草 于 2024-8-24 12:10 编辑

回复 2# ppll2030


    以分配有盘符而视为存在
作者: ppll2030    时间: 2024-8-24 12:44

本帖最后由 ppll2030 于 2024-8-24 12:51 编辑

回复 3# 青青草
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('echo list vol^|diskpart^|find "系统"') do (
  3.     set str=%%i
  4.     if not "!str:~14,1!"==" " (echo 命令1) else (echo 命令2)
  5. )
  6. pause&exit
复制代码

作者: 青青草    时间: 2024-8-24 13:11

本帖最后由 青青草 于 2024-8-24 13:29 编辑

回复 4# ppll2030
谢谢!
如果卷标为其它(非系统分区),如 IMDISK,应如何处理?
作者: ppll2030    时间: 2024-8-24 13:27

本帖最后由 ppll2030 于 2024-8-24 13:38 编辑

回复 5# 青青草


   
这里的“系统”是ESP分区作为系统引导区后,系统自动给其标注的。
如果你要根据卷标查找,就把find “系统” 改为 find “对应的卷标”即可。
你在cmd下,用echo list vol | diskpart 查看一下即可看到个分区的信息。
作者: 青青草    时间: 2024-8-24 13:55

回复 6# ppll2030

当卷标不存在时,无法显示:命令2(此时盘符不存在)

只显示:按任意键继续。
作者: 青青草    时间: 2024-8-24 14:04

回复 6# ppll2030

if not "!str:~14,1!"==" "  (echo 命令1)
当盘符不为空时,显示:命令1
当盘符不存在时,"!str:~14,1!"==" " 是否成立?
谢谢!
作者: 77七    时间: 2024-8-24 14:42

http://www.bathome.net/thread-31999-1-1.html
作者: ppll2030    时间: 2024-8-24 14:47

回复 8# 青青草


    哎。你的题目改了又该。一开始就问你到底是以盘符是否分配为判断,还是是否存在分区为判断了。

!str:~14,1!是否为空,是以esp分区存在为前提的,有盘符就非空,无盘符即为空。

现在你改为卷标"IMDISK"的分区是否存在而判断,就不能用上面的判断了,要改为:
  1. echo list vol|diskpart|find "IMDISK">nul &&echo 命令1 || echo 命令2
复制代码

作者: 青青草    时间: 2024-8-24 21:39

回复 9# 77七

谢谢!
作者: 青青草    时间: 2024-8-24 21:40

回复 10# ppll2030


    谢谢!




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