
existe alguma maneira de encontrar o diretório de um arquivo ("example.txt") e, se encontrar o arquivo, abra o diretório (como "c:\example\sub\") no cmd (ou vb)? é claro que procuramos em todas as partições, não apenas em "C:\".
Responder1
Execute o seguinte comando na raiz de cada uma de suas unidades.
for /f "delims=" %a in ('dir /s /b example.txt') do explorer %~dpa
O comando acima irá encontrar todos os arquivos chamados "example.txt" e então executar o explorer no diretório onde eles estão localizados.
Se você deseja usar um arquivo em lote, cada um %
precisa ser substituído por %%
:
for /f "delims=" %%a in ('dir /s /b example.txt') do explorer %%~dpa
Para obter uma lista de unidades:
for /f "skip=1 delims=" %a in ('wmic logicaldisk get caption') do @echo %a
Em um arquivo em lote:
for /f "skip=1 delims=" %%a in ('wmic logicaldisk get caption') do @echo %%a
Juntando tudo em um arquivo em lote:
for /f "skip=1 delims=" %%a in ('wmic logicaldisk get caption') do (
cd %%a
cd \
for /f "delims=" %%b in ('dir /s /b example.txt') do explorer %%~dpb
)
Para parar após a primeira partida:
for /f "skip=1 delims=" %%a in ('wmic logicaldisk get caption') do (
cd %%a
cd \
for /f "delims=" %%b in ('dir /s /b example.txt') do (
explorer %%~dpb
exit
)
)
Responder2
Isso localizará todos os arquivos com as extensões fornecidas no diretório de trabalho atual e em todos os subdiretórios:
dir *.cpp *.h *.java /b/s
Isso funcionará para arquivos que começam com "pyth"
dir pyth*
você pode estender este exemplo.
Para abrir o local do arquivo (ou seja, a pasta), você pode cd
acessar o resultado e digitar
explorer .
ou
start .
Se não quiser usar cd
, você pode passar o local do arquivo dir
para o comando explorer
ou start
.
Para adaptar isso em um loop for para cada unidade montada, confira esta postagem do Stackoverflow:
https://stackoverflow.com/questions/5709189/batch-script-to-find-drive-letter-of-a-mounted-device