3

есть ли какой-нибудь способ найти каталог файла («example.txt»), а затем, если он находит файл, открыть каталог (например, «c:\example\sub\») в cmd (или vb)? конечно просматривая во всех разделах не просто "C:\".

2 ответа2

4

Запустите следующую команду из корня каждого из ваших дисков.

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
    )
)
0

Это позволит найти все файлы с заданными расширениями в текущем рабочем каталоге и во всех подкаталогах:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .