SAY! is like DOS/Windows/Take Command ECHO with easily embedded control characters. It lets you echo both text and control characters to pipes or files to construct small files on the fly in bat files. You specify embedded control characters as their decimal number equivalents e.g. 7=bell 8=Bs 9=tab 10=Nl 12=form feed 13=Cr SAY! "empty" 13 10 > dummy.txt SAY! "Y" 13 | DEL *.* SAY! 27 "&l5257.1058J" 26 > LPT1: SAY! 7 7 7 "The sky is falling" SAY! "first line" 13 10 "second line" 13 10 > tinyfile.txt will put two lines to the file with CrLf line terminators. Use it to send control strings to a printer, or simulate keystrokes to a program. Generates arbitrary strings for pipes or redirection. It fixes a design flaw in Windows and Take Command ECHO. say! "contents" > somefile.txt will put just the letters contents into the file, not the quotation marks SAY! is very similar to SAY in the Ziff Communications PC Powertools. Raymond Hettinger also wrote a very elaborate SAY program based on SAY! that allows you to use mnemonics like ETX instead of 3. There are two versions included, both with source: ASSEMBLER version say!.com that works in DOS/W3.1/W95/W98/Me/NT/W2K/XP/W2K3/Vista/W7-32 and a 32-bit C version say!.exe that works in W95/W98/Me/NT/W2K/XP/W2K3/Vista/W7-32/W7-64 Use the say!.com version except for Windows 7 64-bit. It is smaller faster, and it does the right thing with: say! "13" " ghosts" > file.txt the com version will put "13 ghosts" into the file. the exe version will but " ghosts" into the file with a leading Cr character. C can't tell the difference between a parm in quotes and one without, so "13" looks to it like 13. To get a literal quote in say!.com use code 34. To get a literal quote in say!.exe use two quotes is row "".