Isso pode fazer o truque para verificar drivers removíveis sem mídias! link . É uma função não documentada!
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.
Isso pode fazer o truque para verificar drivers removíveis sem mídias! link . É uma função não documentada!
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.
Se você estiver usando apenas o DOS, aqui está uma maneira de detectar o tipo de unidade anexada:
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.
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.
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))
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