existe uma maneira de criar um script em vbs (ou outro) que procure um arquivo em cada partição do disco rígido e depois abra a pasta de localização do arquivo se o arquivo for encontrado? Então se eu quiser encontrar o arquivo "rand.txt" que está localizado na unidade H: em H:\stuff\texts\, o código procura em C:,D:,E:,F:, então se encontrar em H: prossegue abrindo a pasta "textos". Eu tentei com o cmd, mas na verdade não está funcionando para mim ...
Responder1
Aqui está uma solução em lote do Windows (pode ser demorada):
@ECHO OFF >NUL
@SETLOCAL enableextensions disabledelayedexpansion
for %%G in (a b 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 (
if exist %%G:\NUL (
echo %%G: drive
for /F "tokens=*" %%H in ('where /r %%G:\ rand.txt 2>NUL') do (
echo %%H
explorer.exe /e,/select,"%%~fH"
)
)
)
@ENDLOCAL
@GOTO :eof
No lugar de echo %%H
você tem o caminho completo para o nome do arquivo ...
Editar: where /r %%G:\ rand.txt 2>NUL
(importante: 2>NUL
) para eliminar mensagens de erro ERROR: The system cannot find the file specified
se o diretório inicial não existir e INFO: Could not find files for the given pattern(s)
como nos próximos exemplos (enumeração fragmentada):
d:\xxx>where /r C:\bat\ randx.txt
ERROR: The system cannot find the file specified.
d:\xxx>echo %errorlevel%
2
d:\xxx>where /r d:\bat\ randx.txt
INFO: Could not find files for the given pattern(s).
d:\xxx>echo %errorlevel%
1
d:\xxx>where /r d:\bat\ rand.txt
d:\bat\files\rand.txt
d:\xxx>echo %errorlevel%
0
d:\xxx>
Responder2
Isso deve funcionar no Powershell:
gwmi Win32_LogicalDisk | Select-Object -expand DeviceID | %{$drive = $_; $drive; ls "$drive\rand.txt" -recurse | %{ii (Split-Path $_)}}