windows - batch script til at finde drevbogstav på en monteret enhed

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at skrive et batch script til at finde en bestemt monteret enhed. Jeg er i Windows 7.


Jeg ved, at enheden vil have mappedrevet: \ custom så jeg vil se på alle muligheder for at finde en enhed med denne sti


Her er hvad jeg har hidtil


    @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
  )
)


Dette virker dog ikke, men det synes at eksistere for hvert drevbogstav .. så jeg ser 'Device Found' for hvert enkelt drevbogstav. Hvorfor det? Går jeg om dette forkert? Hvordan kan jeg finde drevbogstavet, der har en mappe 'brugerdefineret' på rodmappen?


tak,

Stephanie

Bedste reference


Tilføj i slutningen af ​​stien:


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

Andre referencer 1


Brug fsutil fsinfo drives inde i for sætningen i stedet for en statisk liste over drevbogstaver.


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


Hvis der imidlertid gives et drevbogstav til en enhed uden medier, kan den måske stadig give en fejl. Uanset hvad, en check som:


if not exist O: @echo test


fungerede perfekt fint for mig (med og uden not). Drevet eksisterer ikke på mit system, så der blev ikke givet noget, da not blev fjernet.

Andre referencer 2


Lidt kompliceret, men det er den eneste løsning for at undgå at blokere fejl på Win7:




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


En anden metode jeg har fundet bruger kommandoen vol + kontrol ERRORLEVEL (hvis == 1 drevet ikke er monteret):


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
)


BEMÆRK: På WinXP DISKPART vil du ikke se flytbare drev ...

Andre referencer 3


@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

Andre referencer 4


Prøv dette:


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

Andre referencer 5


Dette virker for en harddisk og en 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 .: Kør WinXP