2

Как я могу перечислить все файлы (включая системные и скрытые) на всех жестких дисках (не съемных дисках)?

Я думаю, что-то вроде:

dir -a -h *.* /s > file.txt

но это для конкретного диска, где я.

Как я могу сделать что-то подобное, но с C:, D:, и т.д., Но я не знаю название драйверов DOS, и мне нужен .bat для этого (автоматический список). Реализатор также не может знать имена драйверов.

6 ответов6

2

Существует программа, которая может обнаружить дисководы для компакт-дисков (FINDCD.EXE), которая имеется на некоторых загрузочных дисках (включая аварийный загрузочный диск Windows 98), которые можно использовать в пакетном файле, чтобы пропустить их:

@echo off
findcd.exe
if (%1)==() goto start

:dirit
if not exist %i:\*.* goto done
if (%1)==(%CDROM%) goto done
dir /a/s/o %i:\*.* >> c:\Files.txt

:start
for %i in (c d e f g h i j k l m n o p q r s t u v w x y z) do call %0 %i
goto done

:done

Я просто скинул это вместе с головы (без тестирования, так как я сейчас нахожусь в Windows), но это должно сработать по большей части. Обратите внимание, что дисководам гибких дисков всегда назначается буква, начинающаяся с A, а жесткие диски всегда начинаются с C, поэтому при этом пропускаются A и B.

Существует также программа, которая может обнаруживать ОЗУ (FINDRAMD.EXE), которую можно использовать для обнаружения и пропуска ОЗУ, если она у вас есть, но для этого требуется больше работы (и отдельный пакетный файл). Посмотрите на SETRAMD.BAT который обычно включен для примера.

1

Если вы используете только DOS, вот способ определить тип подключенных дисков:

http://www.dostips.com/DtCodeSnippets.php#Snippets.DrivesAndTypes

Это не работает из командной строки Windows 7, поэтому я не смог расширить ее, но не должно быть слишком сложно добавить цикл для проверки фиксированных дисков и выполнения директории.

1

Тебе очень повезло. У меня все еще был мой старый скрипт DS.BTM (урезанная и модернизированная версия SYSINF.BAT которую я взял много лет назад) на одной машине, из которой это отрывок. Это требует 4DOS от JP Software, которая теперь бесплатна. Как видите, он получает значение LASTDISK из DOS и явно избегает съемных и сетевых дисков.

@echo off
loadbtm on
do d = %@ascii[A] to %@ascii[%_lastdisk]

   iff %@ready[%@char[%d]:] EQ 1 then

       iff %@removable[%@char[%d]:] NE 1 .AND. %@remote[%@char[%d]:] NE 1 then

           dir /s /a: %@char[%d]:\

       endiff

   endiff

enddo

Люди, которые ошибочно приняли DOS для Windows в других ответах, будут рады узнать, что этот сценарий 4DOS - взят из двадцатилетнего сценария SYSINF.BAT для 4DOS, который я обновил до более новых версий 4DOS, а затем перенес на 4OS2 - все еще работает, точно так же, как в 4DOS, с TCC/LE от JP Software в Windows NT 6.1.

0

так вот метод командной строки. Просто используйте %% вместо% в пакете

for %d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (ifexist %d: (dir -a -h %d:\*.* /s > %d.txt))
0

Это может сделать трюк, чтобы проверить сменные драйверы без носителей! http://www.ericphelps.com/batch/samples/adrive.bat.txt. Это недокументированная функция!

-1

Мой ответ требует прав администратора. Но в файле BAT запустите это:

echo list volume | diskpart

или если вы хотите, чтобы только жесткие диски запускали это:

echo list volume | diskpart | Find /I "Partition"

В моем сценарии мне нужен был список сменных носителей, чтобы я мог обновить все мои флешки сразу. Приятно то, что каждый диск обновляется одновременно.

@echo off  
setlocal  

ECHO Searching for removable media. . .  

for /f "usebackq tokens=3 delims= " %%a in (`ECHO List Volume ^| DISKPART ^| FIND /I "Removable"`) do call :Launch %%a  

GOTO:EOF  

:Launch  
  set USB=%1:  
  ECHO Checking drive %USB%   
  IF NOT EXIST %USB%\MDT.bat ECHO Drive %USB% NOT MDT drive && GOTO:EOF  
  ECHO Found thumb drive starting Synch...  
  start %~dp1\Local_MDT_to_USB.bat %USB%  
GOTO:EOF  

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .