
есть ли способ найти каталог файла ("example.txt"), а затем, если файл найден, открыть каталог (например, "c:\example\sub\") в cmd (или vb)? Конечно, просматривая все разделы, а не только "C:\".
решение1
Выполните следующую команду из корня каждого из ваших дисков.
for /f "delims=" %a in ('dir /s /b example.txt') do explorer %~dpa
Приведенная выше команда найдет все файлы с именем «example.txt», а затем запустит проводник в каталоге, где они находятся.
Если вы хотите использовать пакетный файл, то каждый из них %
необходимо заменить на %%
:
for /f "delims=" %%a in ('dir /s /b example.txt') do explorer %%~dpa
Чтобы получить список дисков:
for /f "skip=1 delims=" %a in ('wmic logicaldisk get caption') do @echo %a
В пакетном файле:
for /f "skip=1 delims=" %%a in ('wmic logicaldisk get caption') do @echo %%a
Собираем все это в пакетный файл:
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
)
Чтобы остановиться после первого совпадения:
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
)
)
решение2
Это позволит найти все файлы с указанными расширениями в текущем рабочем каталоге и всех подкаталогах:
dir *.cpp *.h *.java /b/s
Это будет сделано для файлов, начинающихся с «pyth».
dir pyth*
Вы можете расширить этот пример.
Чтобы открыть местоположение файла (т.е. папку), вы можете cd
перейти к результату и ввести либо
explorer .
или
start .
Если вы не хотите использовать cd
, вы можете передать расположение файла dir
команде explorer
или start
.
Чтобы адаптировать это в цикл for для каждого смонтированного диска, ознакомьтесь с этим постом на Stackoverflow: