¿Cómo crear un archivo por lotes para buscar en todas las unidades?

¿Cómo crear un archivo por lotes para buscar en todas las unidades?

¿Cómo puedo hacer que este archivo por lotes lea todas las unidades físicas y asignadas? Funciona bien con C: pero no leerá ninguna otra unidad.

@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

Respuesta1

No existe una variable que simplemente contenga todas las letras asignadas.

si estás ejecutando como administrador,

unidades fsutil fsinfo

devuelve todas esas unidades: un fragmento de código de ejemplo:

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

(juega con las salidas)

... si no es viable, tendrás que atravesarlos todos, es decir:

para %%i en (CDEFGHIJKLMNOPQRSTUVW XYZ) DO @if existe %%i: @echo %%i:

(probablemente debería omitir las letras esperadas de la unidad óptica/unidad de tarjeta de memoria).

VBS-scripting o Powershell son ideales para este tipo de cosas.

Respuesta2

if exist %%i: no siempre funciona. Entonces también puedes verificar tus unidades de esta manera:

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

Espero que esto ayude

información relacionada