Como fazer um arquivo em lote para pesquisar todas as unidades?

Como fazer um arquivo em lote para pesquisar todas as unidades?

Como posso fazer com que esse arquivo em lote leia todas as unidades físicas e mapeadas? Funciona bem com C: mas não lê nenhuma outra unidade.

@echo off
set filePath=
for /R c:\ /d %%a in (*) do if exist "%%a\FileName" set filePath=%%a& goto continue
:continue
if defined filePath echo %COMPUTERNAME% %username% yes >> \\server\%computername%.txt

Responder1

Não há variável que simplesmente carregue todas as letras mapeadas.

se você estiver executando como administrador,

unidades fsutil fsinfo

retorna todas essas unidades - um exemplo de código:

FOR /F "usebackq tokens=1" %%a IN (`MOUNTVOL ^| FIND ":\"`) DO (FOR /F "usebackq tokens=3" %%b IN (`FSUTIL FSINFO DRIVETYPE %%a`) DO (IF /I "%%b" EQU "Removable" ECHO %%a ))

(brincar com as saídas)

... se não for viável, você terá que passar por todos eles, ou seja:

para %%i em (CDEFGHIJKLMNOPQRSTUVW XYZ) DO @if existir %%i: @echo %%i:

(provavelmente deve omitir as letras esperadas da unidade óptica/unidade do cartão de memória).

O script VBS ou Powershell é ideal para esse tipo de coisa.

Responder2

if exist %%i: nem sempre funciona. Portanto, você também pode verificar suas unidades desta forma:

(dir %%i:>NUL) && (
  echo Drive [%%i]: exist
) || (
  echo Drive [%%i]: NOT exist
)

Espero que isto ajude

informação relacionada