Forums before death by AOL, social media and spammers... "We can't have nice things"
|    alt.msdos.batch.nt    |    Fun with Windows NT batch files    |    68,980 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 67,562 of 68,980    |
|    JJ to All    |
|    Re: How to Test Whether a Drive Exists    |
|    07 Jun 20 22:15:35    |
   
   From: jj4public@vfemail.net   
      
   On Sun, 7 Jun 2020 22:01:10 +0700, JJ wrote:   
      
   > On Fri, 5 Jun 2020 19:04:34 -0700 (PDT), Peter wrote:   
   >> How can I test in a batch file whether an external USB drive does not   
   >> exist because: 1) it˙s not currently connected to the PC or 2) it is   
   >> connected but it˙s locked by a program such as BitLocker (in Windows 10)?   
   >>   
   >> If I use the usual ´if not exist d:ˇ line it will say the drive does not   
   >> exist in either case above. How can I distinguish between 1) the drive   
   >> is not connected or 2) the drive is connected but it˙s locked?   
   >>   
   >> FYI, when a drive is locked by Bitlocker it will still be listed in   
   >> Windows Explorer however ´if existˇ will say that it does not exist.   
   >   
   > Use this.   
   >   
   > @echo off   
   > setlocal   
   > set drive=z   
   > if not exist %drive%:\ (   
   > echo Drive is not found/connected, or has no drive letter assigned.   
   > pause   
   > goto :eof   
   > )   
   > pushd %drive%:\   
   > if errorlevel 1 (   
   > rem the above PUSHD command will show the error message whether   
   > rem the drive is bitlocker-locked, or is inaccessible.   
   > pause   
   > goto :eof   
   > )   
   > popd   
   > echo Drive is connected and accessible.   
   > pause   
      
   To determine whether the drive is bitlocker-locked or inaccessible due to   
   other reason, you'll have to check the error message. e.g.   
      
   @echo off   
   setlocal   
   set drive=z   
   if not exist %drive%:\ (   
    echo Drive is not found/connected, or has no drive letter assigned.   
    pause   
    goto :eof   
   )   
   set msg=   
   for /f "delims=" %%A in ('pushd %drive%:\') do set msg=%%A   
   if "%msg%" neq "" (   
    find /i "locked" > nul   
    if errorlevel 1 (   
    echo Drive is not accessible.   
    ) else (   
    echo Drive is bitlocker-locked.   
    )   
    pause   
    goto :eof   
   )   
   popd   
   echo Drive is connected and accessible.   
   pause   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca