command > filename Redirect command output to a file command >> filename APPEND into a file command < filename Type a text file and pass the text to command commandA | commandB Pipe the output from commandA into commandB commandA & commandB Run commandA and then run commandB commandA && commandB Run commandA, if it succeeds then run commandB commandA || commandB Run commandA, if it fails then run commandB Numeric handles: STDIN = 0 Keyboard input STDOUT = 1 Text output STDERR = 2 Error text output UNDEFINED = 3-9 command 2> filename Redirect any error message into a file command 2>> filename Append any error message into a file (command)2> filename Redirect any CMD.exe error into a file command > file 2>&1 Redirect errors and output to one file command > file 2<&1 Redirect output and errors to one file command > fileA 2> fileB Redirect output and errors to separate files command 2>&1 >filename This will fail! Redirect to NUL (hide errors) command 2> nul Redirect error messages to NUL command >nul 2>&1 Redirect error and output to NUL command >filename 2> nul Redirect output to file but suppress error (command)>filename 2> nul Redirect output to file but suppress CMD.exe errors
Note, any long filenames must be surrounded in "double quotes". A CMD error is an error raised by the command processor itself rather than the program/command.
Redirection with > or 2> will overwrite any existing file.
You can also redirect to a printer with > PRN or >LPT1
To prevent the > and < characters from causing redirection, escape with a caret: ^> or ^<
Redirect multiple lines by bracketing a set of commands:
( Echo sample text1 Echo sample text2 ) > c:\logfile.txt
The CMD Shell can redirect ASCII/ANSI (the default) or Unicode (UCS-2 le) but not UTF-8.
This can be selected by launching CMD /A or CMD /U
With the default settings a UCS-2 file can be converted by redirecting it (note it's the redirection not the TYPE/MORE command that makes the encoding change)
TYPE unicode.txt > asciifile.txt
European characters like ABCàéÿ will usually convert correctly, but others like £¥ƒ€ will become random extended ASCII characters: œ¾Ÿ?
When a command is piped with '| batch_command ' this will start (or rather CALL) a new CMD.exe instance, in effect running:
C:\Windows\system32\cmd.exe /C /S /D "batch_command"
This has several side effects:
Any newline (CR/LF) characters in the batch_command will be turned into & operators. (an in depth discussion of this on StackOverflow)
If the batch_command includes any caret escape characters ^ they will need to be doubled up so that the escape survives into the new CMD shell.
Calling a new CMD shell also has a small effect on performance, this may not be noticable for small data sets.
Examples:
DIR >MyFileListing.txt DIR /o:n >"Another list of Files.txt" DIR C:\ >List_of_C.txt 2>errorlog.txt DIR C:\ >List_of_C.txt & DIR D:\ >List_of_D.txt ECHO y| DEL *.txt ECHO Some text ^<html tag^> more text ECHO DIR C:\ ^> c:\logfile.txt >NewScript.cmd COPY nul empty.txt MEM /C >>MemLog.txt Date /T >>MemLog.txt SORT < MyTextFile.txt SET _output=%_missing% 2>nul FIND /i "Jones" < names.txt >logfile.txt (TYPE logfile.txt >> newfile.txt) 2>nul
“Stupidity, outrage, vanity, cruelty, iniquity, bad faith, falsehood / we fail to see the whole array when it is facing in the same direction as we” ~ Jean Rostand (French Historian)
Related:
Syntax
TYPE - Display the contents of one or more text files
Q245031 - Error when using the | pipe symbol
Equivalent bash command (Linux): Redirection - Spooling output to a file, piping input
© Copyright SS64.com 1999-2013
Some rights reserved