Windows Batch: How remove all blank (or empty) lines

19,135

Solution 1

For /f does not process empty lines:

for /f "usebackq tokens=* delims=" %%a in ("test.txt") do (echo(%%a)>>~.txt
move /y  ~.txt "test.txt"

Solution 2

You could also use FINDSTR:

findstr /v "^$" C:\text_with_blank_lines.txt > C:\text_without_blank_lines.txt

/V -- Print only lines that do NOT contain a match.
^ --- Line position: beginning of line
$ --- Line position: end of line

I usually pipe command output to it:

dir | findstr /v "^$"

You also might find these answers to a similar question helpful, since some 'blank lines' may include spaces or tabs.

https://stackoverflow.com/a/45021815/5651418
https://stackoverflow.com/a/16062125/5651418

Share:
19,135
andyandy
Author by

andyandy

Updated on June 11, 2022

Comments

  • andyandy
    andyandy almost 2 years

    I am trying to remove all blank lines from a text file using a Windows batch program.

    I know the simplest way do achieving this is bash is via regular expressions and the sed command:

    sed -i "/^$/d" test.txt
    

    Question: Does Windows batch have an similar simple method for removing all lines from a text file? Otherwise, what is the simplest method to achieving this?

    Note: I'm running this batch script to setup new Windows computers for customers to use, and so preferably no additional programs need to be installed (and then unistalled) to achieve this - ideally, I'll just be using the "standard" batch library.