批处理脚本以查找已安装设备的驱动器号

时间:2011-04-18 21:33:43

标签: windows batch-file

我正在尝试编写批处理脚本来查找特定的已安装设备。我在Windows 7中。

我知道该设备将具有文件夹drive:\ custom所以我想查看所有可能的情况来查找具有此路径的设备

这是我到目前为止所拥有的

    @echo off
   setLocal Enabledelayedexpansion


for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  if exist %%d:\custom (
     ECHO Device Found : %%d
  )
)

这不起作用,它认为它存在于每个驱动器盘符..所以我看到每个驱动器盘符的'找到设备'。这是为什么?我错了吗?如何在根目录中找到具有“custom”文件夹的驱动器号?

感谢,
斯蒂芬妮

6 个答案:

答案 0 :(得分:3)

fsutil fsinfo drives语句中使用for而不是静态驱动器号列表。

for /f "tokens=1,*" %%i in ('fsutil fsinfo drives') do (
  :: work with %%j here
)

但是,如果为没有媒体的设备提供了驱动器号,则可能仍然会出错。无论哪种方式,检查如:

if not exist O:\ @echo test

对我来说非常好(有和没有not)。我的系统上不存在该驱动器,因此在移除not时没有给出输出。

答案 1 :(得分:1)

在路径末尾添加\

IF EXIST %%d:\custom\ (...)

答案 2 :(得分:1)

有点复杂,但这是避免在Win7上阻止错误的唯一解决方案:

for /f "tokens=3" %%d in ('echo LIST Volume ^| DISKPART ^| findstr "Healthy Unusable"') do (
  if exist %%d:\custom echo Device found
)

我发现的另一种方法是使用vol命令+检查ERRORLEVEL(如果== 1未安装驱动器):

for /f "tokens=3" %%d in ('echo LIST Volume ^| DISKPART ^| findstr "Healthy Unusable"') do (
   vol %%d:
   if !ERRORLEVEL!==0 if exist %%d:\custom echo Device found
)

注意:在WinXP上DISKPART将看不到可移动驱动器......

答案 3 :(得分:0)

@ECHO OFF
:CICLO
CLS&ECHO.&ECHO  VER ESTADO UNIDADES CON WMIC
SET "DVF="

FOR /F "tokens=1,*" %%A IN ('wmic logicaldisk get caption^, description ^| FIND ":"') DO (

   VOL %%A >nul 2>&1 && (
      CALL SET "DVF=%%DVF%% %%A"& ECHO   %%A ^| ON.  %%B) || (
      ECHO   %%A ^| OFF. %%B
   )
)   
ECHO  DEVICEFOUND: %DVF%
TIMEOUT /T 5 >NUL
GOTO:CICLO

答案 4 :(得分:-1)

试试这个:

if exist %%d:\nul (
   echo Device found %%d
)

答案 5 :(得分:-2)

这适用于硬盘和pendrive:

@echo off
for  %%? in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
        dir %%?:\ > nul 2>nul
        if exist %%?:\custom echo Device found(s): %%?:\ 
)

P.S。:运行WinXP