Encontrar un archivo con vbs y abrir la carpeta de ubicación

Encontrar un archivo con vbs y abrir la carpeta de ubicación

¿Hay alguna manera de crear un script en vbs (u otro) que busque un archivo en cada partición del disco duro y luego abra la carpeta de ubicación del archivo si se encuentra el archivo? Entonces, si quiero encontrar el archivo "rand.txt" que se encuentra en la unidad H: en H:\stuff\texts\, el código busca en C:,D:,E:,F:, entonces, si lo encuentra en H: se procede a abrir la carpeta "textos". Lo intenté con cmd pero en realidad no me funciona...

Respuesta1

Aquí hay una solución por lotes de Windows (puede llevar mucho tiempo):

@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

En lugar de echo %%Htener la ruta completa al nombre del archivo...

Editar: where /r %%G:\ rand.txt 2>NUL(importante: 2>NUL) para eliminar mensajes de error ERROR: The system cannot find the file specifiedsi el directorio de inicio no existe y INFO: Could not find files for the given pattern(s)como en los siguientes ejemplos (enumeración fragmentaria):

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>

Respuesta2

Esto debería hacerlo en Powershell:

gwmi Win32_LogicalDisk | Select-Object -expand DeviceID | %{$drive = $_; $drive; ls "$drive\rand.txt" -recurse | %{ii (Split-Path $_)}}

información relacionada