This page is edited from the 1cmdfaq.txt faq-file contained in
my tscmd.zip
command line interface (CLI) collection. That zipped file has much
additional material, including a number of detached .cmd script
files. It is recommended that you also get the zipped version as a
companion.
Please see "
The Description and
the Index page" for the conditions of usage and other such
information.
 
114} How do I pick a file's lines that are three characters long?
Q: I have a text file with a list of around 900 names in it. I'd like
to be able to retrieve all the names that are three characters long.
The method is an adaptation of items
#26
and
#27
of this FAQ.
   @echo off & setlocal enableextensions enabledelayedexpansion
   for /f "delims=" %%a in ('type myfile.txt') do (
       set name_=%%a
       set charCount=0
       for /l %%c in (0,1,255) do (
           set si=!name_:~%%c,1!
           if defined si set /a charCount+=1)
       if !charCount! EQU 3 echo !name_!
       )
   endlocal & goto :EOF
This method cannot handle names with the "poison characters".
However, a much simpler and still an all-script solution is
   findstr "^...$" "My test file.txt"
With
sed it would be
   <"My test file.txt" sed -n "s/^...$/&/p"
Note the redirection formulation instead of using
   sed -n "s/^...$/&/p" "My test file.txt"
which may fail depending on the SED port version LFN handling.
With 
gawk
   <"My test file.txt" gawk "{if(length()==3)printf\"%%s\n\",$0}"
What if you want all the names that are three or less characters
long?
   findstr "^.$ ^..$ ^...$" "My test file.txt"