Находим файл с vbs и открываем папку с его расположением

Находим файл с vbs и открываем папку с его расположением

есть ли способ создать скрипт в vbs (или другом), который ищет файл в каждом разделе жесткого диска, а затем открывает папку расположения файла, если файл найден? Так что если я хочу найти файл "rand.txt", который находится на диске H: в H:\stuff\texts\, код ищет в C:,D:,E:,F:, затем, если он находит его в H:, он переходит к открытию папки "texts". Я пробовал с cmd, но это на самом деле не работает для меня...

решение1

Вот пакетное решение для Windows (может занять много времени):

@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

Вместо этого echo %%Hу вас есть полный путь к имени файла...

Редактировать: where /r %%G:\ rand.txt 2>NUL(важно: 2>NUL) для устранения сообщений об ошибках ERROR: The system cannot find the file specified, если начальный каталог не существует и INFO: Could not find files for the given pattern(s)как в следующих примерах (фрагментарный перечень):

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>

решение2

Это должно сделать в Powershell:

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

Связанный контент