Есть ли способ создать сценарий в VBS (или другой), который ищет файл в каждом разделе жесткого диска, а затем открывает папку расположения файла, если файл был найден? Поэтому, если я хочу найти файл "rand.txt", который находится на диске H: в H:\stuff\text \, код выглядит на C:, D:, E:, F:, тогда, если он находит это в H: он продолжает открывать папку "тексты". Я пытался с cmd, но на самом деле это не работает для меня ...
2 ответа
0
Это должно сделать это в Powershell:
gwmi Win32_LogicalDisk | Select-Object -expand DeviceID | %{$drive = $_; $drive; ls "$drive\rand.txt" -recurse | %{ii (Split-Path $_)}}
0
Вот пакетное решение для 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>