すべてのドライブを検索するバッチファイルを作成するにはどうすればよいですか?

すべてのドライブを検索するバッチファイルを作成するにはどうすればよいですか?

このバッチ ファイルを使用して、すべての物理ドライブとマップされたドライブを読み取るにはどうすればよいですか? 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) に存在する場合 DO @if %%i: @echo %%i:

(おそらく、予想される光学ドライブ/メモリ カードのドライブ文字を省略する必要があります)。

この種の処理には、VBS スクリプトまたは Powershell が最適です。

答え2

if exist %%i: 常に機能するとは限りません。そのため、次の方法でドライブを確認することもできます:

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

お役に立てれば

関連情報