It could be done with FINDSTR alone if the number of columns on valid lines was <=15.
For example, the following would show all lines that do not have exactly 3 columns:
findstr /vx "[^|]*|[^|]*|[^|]*" test.txt
But FINDSTR cannot handle more than 15 character class terms. See What are the undocumented features and limitations of the Windows FINDSTR command? for more info. Your search would require 35 such terms.
The following solution returns all the faulty lines, except it ignores empty lines. It relies on REPL.BAT - a hybrid JScript/batch utility that performs a regex search/replace on stdin and writes the result to stdout. REPL.BAT is pure script that will run on any modern Windows machine from XP onward.
The solution uses REPL.BAT to remove all characters from lines that have exactly 36 columns, and then uses FINDSTR to print remaining lines that have at least one character.
<test.txt repl "^([^|]*\|){35}[^|]*$" ""|findstr .