标题: [其他] 【已解决】批处理如何判断特定卷标是否存在? [打印本页]
作者: 青青草 时间: 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# 青青草 - @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('echo list vol^|diskpart^|find "系统"') do (
- set str=%%i
- if not "!str:~14,1!"==" " (echo 命令1) else (echo 命令2)
- )
- 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"的分区是否存在而判断,就不能用上面的判断了,要改为:- 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 |