Win bat文件:如何将FIND的结果转换为新变量?

时间:2012-02-24 14:59:26

标签: windows pdf batch-file pdftk

pdftk工具“dump_data”功能可用于提供有关pdf的元信息,包括页数。以下命令......

pdftk test.pdf dump_data | find "NumberOfPages"

...输出完整的数据转储行,例如:

"Number of pages: 32"

如何将计数值(在上述情况下为32)转换为新变量以便在bat文件中进一步处理?

2 个答案:

答案 0 :(得分:3)

如果该行的格式是固定的并且与您显示的格式匹配,您可以尝试这样的事情:

@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

当然,>testfile ECHO ...行仅用于测试目的,TYPE testfile循环的FOR部分应替换为pdftk test.pdf dump_data

答案 1 :(得分:2)

试试这个:

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
)

请注意,如果您在批处理文件中使用它,则必须在上面示例中的每个变量前面使用两个%。如果直接从控制台运行它,请仅使用一个%