모든 물리적 드라이브와 매핑된 드라이브를 읽으려면 이 배치 파일을 어떻게 얻을 수 있습니까? 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 ))
(출력을 가지고 놀아보세요)
... 실행 가능하지 않은 경우 모두 폭발시켜야 합니다. 즉:
for %%i in (CDEFGHIJKLMNOPQRSTUVW XYZ) DO @if 존재 %%i: @echo %%i:
(아마도 예상되는 광학 드라이브/메모리 카드 드라이브 문자를 생략해야 할 것입니다).
VBS 스크립팅 또는 Powershell이 이런 종류의 작업에 이상적입니다.
답변2
if exist %%i
: 항상 작동하는 것은 아닙니다. 따라서 다음과 같은 방법으로 드라이브를 확인할 수도 있습니다.
(dir %%i:>NUL) && (
echo Drive [%%i]: exist
) || (
echo Drive [%%i]: NOT exist
)
도움이 되었기를 바랍니다