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

时间:2014-11-22 23:02:17

标签: batch-file

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

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%

2 个答案:

答案 0 :(得分:1)

如果我是你,我会计算你的括号 - 一个比闭合更开放......


唉!现在我已经清理了我的显示器......

我有2个DVD驱动器,发现如果我将目标放在一个,经过测试并将其移动到另一个,则空驱动器会出现一个令人讨厌的弹出窗口。

所以我摆弄了代码并想出了这个,这似乎不会缺少内容:

@ECHO OFF
SETLOCAL
SET "volname=HTML4_WCC"
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 (
 FOR /f "tokens=5*" %%L IN ('VOL %%d: 2^>nul^|FIND /i "drive"'
  ) DO IF "%%L"=="is" IF "%%M"=="%volname%" set drive=%%d & goto success
)
goto :eof
:success
ECHO Disc in %drive%
GOTO :EOF

或者您可能遇到案例不匹配并需要if /i

答案 1 :(得分:0)

感谢Magoo,您的上述答案对我来说非常适合。我还根据这个问题Refer to/select a drive based only on its label? (i.e., not the drive letter)的答案提出了一个稍微简单的替代方案。

@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