Файл Win bat: Как получить результат поиска в новой переменной? - PullRequest
1 голос
/ 24 февраля 2012

Функция pdftk tool "dump_data" может использоваться для доставки метаинформации о файле PDF, включая количество страниц. Следующая команда ...

pdftk test.pdf dump_data | find "NumberOfPages"

... выводит полную строку дампа данных, например:

"Number of pages: 32"

Как я могу получить значение счетчика (32 в приведенном выше случае) в новую переменную для дальнейшей обработки в файле bat?

Ответы [ 2 ]

3 голосов
/ 24 февраля 2012

Если формат строки фиксированный и соответствует показанному вами, вы можете попробовать что-то вроде этого:

@ECHO OFF
>testfile ECHO Number of pages: 32
FOR /F "delims=: tokens=2" %%A IN ('TYPE testfile ^| FIND "Number of pages"') DO SET /A pagenum=%%A
ECHO %pagenum%

Выходы:

32

Естественно, *Линия 1007 * предназначена только для тестирования, и часть TYPE testfile цикла FOR должна быть заменена на pdftk test.pdf dump_data.

2 голосов
/ 24 февраля 2012

Попробуйте это:

FOR /F "usebackq delims=" %%v IN (`pdftk test.pdf dump_data ^| find "Number of pages"`) DO (
    FOR /F "delims=: tokens=1,2" %%i IN ("%%v") DO set NBPAGES=%%j
)

Обратите внимание, что вы должны использовать два % перед каждой переменной в приведенном выше примере, если вы используете его в пакетном файле. Если вы запускаете его прямо из консоли, используйте только один %.

...