Batch file 如何检查特定光盘并将驱动器号传递到另一个批处理文件?

Batch file 如何检查特定光盘并将驱动器号传递到另一个批处理文件?,batch-file,Batch File,我想使用批处理文件,通过引用某个特定磁盘的卷名来检查该磁盘是否在驱动器中,然后将该磁盘所在的驱动器号传递给另一个批处理文件。我设法找到了一些几乎适合我的东西,但不完全是:。我一直试图让下面的工作,但语法现在是不正确的,我不知道在哪里 SET "volname=Desired_Name" FOR %%d IN (Z Y X W V U T S R Q P O N M L K J I H G F E D C B A) DO IF EXIST %%d:\. ( FOR /f "tokens=5*"

我想使用批处理文件,通过引用某个特定磁盘的卷名来检查该磁盘是否在驱动器中,然后将该磁盘所在的驱动器号传递给另一个批处理文件。我设法找到了一些几乎适合我的东西,但不完全是:。我一直试图让下面的工作,但语法现在是不正确的,我不知道在哪里

SET "volname=Desired_Name"
FOR %%d IN (Z Y X W V U T S R Q P O N M L K J I H G F E D C B A) DO IF EXIST %%d:\. (
 FOR /f "tokens=5*" %%L IN ('VOL %%d:^|FIND /i "drive"'
  ) DO IF "%%L"=="is" IF "%%M"=="%volname%" set drive=%%d & goto success
)
goto :eof
:success
success.bat %drive%

如果我是你,我会数一数你的括号-一个比一个更开放的括号


啊!现在我已经清洁了我的显示器

我有两个DVD光驱,发现如果我把目标放在其中一个,测试并移动到另一个,空的光驱会弹出一个糟糕的弹出窗口

因此,我修改了代码,并提出了这个,似乎对丢失的内容免疫:

@ECHO关闭
SETLOCAL
设置“volname=HTML4_WCC”
对于%%d IN(Z Y X W V U T S R Q P O N M L K J H G F E d C B A)是否(
对于/f“令牌=5*”%%L IN('VOL%%d:2^>num^查找/i“驱动器”'
)如果“%%L”==”是“如果”%%M”==%volname%”设置驱动器=%%d,则执行此操作(&G)转到成功
)
后藤:eof
:成功
在%drive%中回显光盘
后藤:EOF

或者可能您的案例不匹配,需要
if/i

谢谢Magoo,您上面的答案对我非常有用。根据这个问题的答案,我还提出了一个稍微简单一点的替代方案


我仔细检查了一下,在括号里找不到任何不匹配的地方。你在哪里看到的?
@echo off
for /f %%D in ('wmic volume get DriveLetter^, Label ^| find "HTML4_WCC"') do set 
drive=%%D
if not "%drive%"=="" goto success
goto :eof
:success
echo Disc in %drive%
goto :eof