我正在尝试编写批处理脚本来查找特定的已安装设备。我在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”文件夹的驱动器号?
感谢,
斯蒂芬妮
答案 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