windows - Win bat fil: Hvordan får man resultatet af FIND til en ny variabel?

Indlæg af Hanne Mølgaard Plasc

Problem



Pdftk-værktøjet 'dump\_data' -funktionen kan bruges til at levere meta-oplysninger om en pdf, herunder antallet af sider. Følgende kommando ...


pdftk test.pdf dump\_data | find "NumberOfPages"


... outputs den fulde datadump linje, for eksempel:


"Number of pages: 32"


Hvordan kan jeg få tællerværdien (32 i ovenstående tilfælde) til en ny variabel til videre behandling i flagermusfilen?

Bedste reference


Hvis formatet på linjen er fast og svarer til den, du har vist, kan du prøve noget sådan:


@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\%


Udgange:


32


Naturligvis er linjen >testfile ECHO ... kun til test, og TYPE testfile delen af ​​FOR -sløjfen skal erstattes af din pdftk test.pdf dump\_data.

Andre referencer 1


Prøv dette:


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
)


Bemærk at du skal bruge to \% foran hver variabel i ovenstående eksempel, hvis du bruger det i en batchfil. Hvis du kører det direkte fra konsollen, skal du kun bruge en \%.