CMD: поиск программы и каталога переменных - PullRequest
1 голос
/ 29 августа 2009

Я хочу найти программу, например:

cd "C:\"
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
)

Первая проблема: я хочу, чтобы он выполнял поиск по всем жестким дискам (например, «cd My Computer» или что-то в этом роде?)

После этого он должен создать переменную каталога, в котором находится эта программа.

Как это сделать в пакетном режиме / cmd?

Ответы [ 2 ]

1 голос
/ 31 августа 2009

Этот скрипт распечатает полные пути, где файл найден:

@echo OFF

for %%D in (c,d,e) do (    
    If exist %%D:\ (        
        for /f "delims=" %%f in ('dir /b /s %%D:\%1 2^> NUL') do (
            @echo %1 found: %%~dpf
        )
    )
)

%%~dpf будет иметь путь к файлу для каждого найденного вхождения (их может быть несколько). Если вам нужно действовать по этим путям, у вас есть несколько вариантов:

  1. Добавьте команды обработки файла после строки @echo %1 found: %%~dpf, используя %%~dpf в качестве переменной, содержащей полный путь к файлу.

  2. Запишите путь к временному текстовому файлу (@echo %%~dpf >> temp.out), затем прочитайте его обратно в другом цикле for для обработки.

  3. Объединить путь к локальной переменной среды (set FILE_PATHS=!FILE_PATHS!;%%~dpf), а затем проанализировать эту переменную в другом цикле for для обработки.

1 голос
/ 29 августа 2009

Проблема с «cd C: \», она работает только когда вы находитесь на диске C:, но не если вы находитесь на другом диске. Решение этой проблемы - сначала написать букву диска Проще всего было бы сделать это следующим образом:

for %%D in (c,d,e,f,g,h,i,j,k,l,m,o) do (
    %%D:
    cd %%D:\
        for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
        )
)

тогда он ищет все диски. Вы также можете использовать

for %%D in (c,d,e,f,g,h,i,j,k,l,m,o) do (
    If exist %%D:\ do (
        %%D:
        cd %%D:\
        for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
        )
    )
)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...