Como listar todos os arquivos em todos os discos rígidos com saída no lote do MS-DOS?

2

Como posso listar todos os arquivos (incluindo sistema e oculto) em todos os discos rígidos (não em unidades removíveis)?

Eu penso em algo como:

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

mas isso é para a unidade específica em que estou.

Como posso fazer algo assim, mas com C :, D :, etc, mas eu não sei o nome do DOS dos drivers, e eu preciso de um .bat para fazer isso (uma listagem automática). O implementador também não pode saber os nomes dos drivers.

    
por Leandro Tupone 10.02.2012 / 15:47

6 respostas

0

Isso pode fazer o truque para verificar drivers removíveis sem mídias! link . É uma função não documentada!

    
por 16.02.2012 / 20:01
2

Existe um programa que pode detectar unidades de CD ( FINDCD.EXE ) que vem em algum boot discos (incluindo o disco de inicialização de emergência do Windows 98) que você pode usar em um arquivo em lotes para ignorá-los:

@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

Eu apenas joguei isso fora do topo da minha cabeça (sem testes desde que eu estou atualmente no Windows), mas deve fazer o truque para a maior parte. Note que as unidades de disquetes são sempre designadas com uma letra de unidade começando com A, enquanto as unidades de disco rígido sempre começam em C, então isso salta A e B.

Há também um programa que pode detectar unidades de memória RAM ( FINDRAMD.EXE ) que você pode usar para detectar e pular unidades de memória RAM, se você tiver, mas isso requer mais trabalho (e um arquivo de lote separado). Veja SETRAMD.BAT , que geralmente é incluído para um exemplo.

    
por 10.02.2012 / 19:48
1

Se você estiver usando apenas o DOS, aqui está uma maneira de detectar o tipo de unidade anexada:

link

Isso não funciona no Prompt de Comando do Windows 7, portanto, não consegui expandi-lo ainda mais, mas não deve ser muito difícil adicionar um loop para testar discos fixos e executar o diretório.

    
por 10.02.2012 / 19:23
1

Você é muito sortudo. Eu ainda tinha meu antigo script DS.BTM (uma versão reduzida e modernizada de um SYSINF.BAT que eu peguei há muitos anos atrás) em uma máquina, da qual este é um trecho. Isso requer o 4DOS da JP Software, que agora é freeware. Como você pode ver, ele pega o valor LASTDISK do DOS e evita explicitamente as unidades removíveis e de rede.

@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

As pessoas que confundiram o DOS com o Windows em outras respostas ficarão felizes em saber que este script 4DOS - tirado de um script SYSINF.BAT de 20 anos para 4DOS que atualizei para versões mais recentes do 4DOS e depois portado para 4OS2 - ainda funciona, da mesma forma que no 4DOS, com o TCC / LE da JP Software no Windows NT 6.1.

    
por 10.02.2012 / 23:05
0

então aqui está um método de linha de comando. Basta usar %% em vez de% em um lote

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))
    
por 10.02.2012 / 16:23
-1

Minha resposta requer direitos de administrador. Mas em um arquivo BAT, execute isto:

echo list volume | diskpart

ou se você quiser que apenas os discos rígidos executem isso:

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

No meu script, eu precisava de uma lista de mídias removíveis para poder atualizar todos os meus pen drives de uma só vez. O bom disso é que cada unidade é atualizada ao mesmo tempo.

@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  
    
por 01.11.2013 / 21:22

Tags