есть ли какой-нибудь способ найти каталог файла («example.txt»), а затем, если он находит файл, открыть каталог (например, «c:\example\sub\») в cmd (или vb)? конечно просматривая во всех разделах не просто "C:\".
2 ответа
Запустите следующую команду из корня каждого из ваших дисков.
for /f "delims=" %a in ('dir /s /b example.txt') do explorer %~dpa
Приведенная выше команда найдет все файлы с именем "example.txt", а затем запустит explorer в каталоге, где бы они ни находились.
Если вы хотите использовать пакетный файл, каждый %
должен быть заменен на %%
:
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
)
)
Это позволит найти все файлы с заданными расширениями в текущем рабочем каталоге и во всех подкаталогах:
dir *.cpp *.h *.java /b/s
Это будет сделано для файлов, начинающихся с "pyth"
dir pyth*
Вы можете расширить этот пример.
Чтобы открыть местоположение файла (то есть папка) , вы можете cd
к результату и введите либо
explorer .
или же
start .
Если вы не хотите использовать cd
вы можете передать местоположение файла из dir
в explorer
или команду start
.
Чтобы адаптировать это в цикл for для каждого смонтированного диска, проверьте этот пост Stackoverflow:
https://stackoverflow.com/questions/5709189/batch-script-to-find-drive-letter-of-a-mounted-device