Search code examples
batch-filecountlines

Batch file: store lines of command's output without writing to a file?


Windows XP

My batch file runs a command that has several lines of output. How can I count (and store in a variable) the lines of output without ever writing to the disk?


Solution

  • Here's sample script that will count the lines in the output of the dir command.

    @echo off
    setlocal enabledelayedexpansion
    
    set lc=0
    
    for /f "usebackq delims=_" %%i in (`dir`) do (
      echo %%i
      set /a lc=!lc! + 1
    )
    
    echo %lc%
    
    endlocal
    

    You can substitute dir with your command and you can use quotes and specify parameters. You will have to escape some other characters though - ^, | < > and &.

    If you need to not only count the lines, but also parse each line, you might have to change the token delimiter from _ (as I used in the example) to something else that will not result in the line split in multiple tokens.