[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

批处理如何判断驱动器(有盘符)特定卷标(如DISK)是否存在?如果存在,则执行命令1,如果不存在,则执行命令2。
请哪位大神赐教!
谢谢!

回复 10# ppll2030


    谢谢!

TOP

回复 9# 77七

谢谢!

TOP

回复 8# 青青草


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

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

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

TOP

bat小白,请多指教!谢谢!

TOP

回复 6# ppll2030

if not "!str:~14,1!"==" "  (echo 命令1)
当盘符不为空时,显示:命令1
当盘符不存在时,"!str:~14,1!"==" " 是否成立?
谢谢!

TOP

回复 6# ppll2030

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

只显示:按任意键继续。

TOP

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

回复 5# 青青草


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

TOP

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

回复 4# ppll2030
谢谢!
如果卷标为其它(非系统分区),如 IMDISK,应如何处理?

TOP

本帖最后由 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
复制代码

TOP

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

回复 2# ppll2030


    以分配有盘符而视为存在

TOP

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

其次,
echo list vol | diskpart
可以查看本机下所有分区,包含无盘符的分区。
接下来就看楼主怎么定义了。

TOP

返回列表