Как заставить этот пакетный файл читать все физические и сопоставленные диски? Он отлично работает с C:, но не читает другие диски.
@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
решение1
Не существует переменной, которая просто содержала бы все отображенные буквы.
если вы работаете как администратор,
fsutil fsinfo диски
возвращает все такие диски — пример кода:
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 ))
(поиграйтесь с выходами)
... если это невыполнимо, вам придется проработать их все, то есть:
для %%i в (CDEFGHIJKLMNOPQRSTUVW XYZ) ДЕЛАТЬ @if существует %%i: @echo %%i:
(вероятно, следует опустить ожидаемые буквы оптического привода/карты памяти).
Для таких задач идеально подходят скрипты VBS или Powershell.
решение2
if exist %%i
: не всегда работает. Так что вы также можете проверить свои диски таким образом:
(dir %%i:>NUL) && (
echo Drive [%%i]: exist
) || (
echo Drive [%%i]: NOT exist
)
Надеюсь это поможет