How does the echo command works in batch programming

Partial answer is this: What does "@" mean in Windows batch scripts

The @ before the command means do not print that command when running it.

The off argument tells the script not output any other commands, however without the @ would output the echo off (since echoing hasn't yet been turned off)

The on argument turns command echoing back on.

Any other arguments are just echoed to the display


By default, every command executed in a batch file is also echoed to the output - not just the output of the command, but the command itself.

The echo command has three modes:

  1. When called with some arguments AFTER a space, it will output the arguments.
  2. When called as echo. (no space) it will output just a blank line.
  3. When called with just the arguments on or off, it controls the behaviour of printing the commands as they execute.*

So, the echo off command turns off the output at the start of the batch file. However, that command itself is still echoed before it has a chance to turn off the echoing. The @ symbol has the effect of turning off the output for only the current command.

Combining the two, the @echo off at the start of a batch file turns off the echoing without itself being echoed.

(* I'm not sure exactly how to output the text "on" or "off", but I suspect that using quotes around the text will change the behaviour.)


The ECHO command in Windows CMD is used to print out text to the screen, display the actual setting of the Command-line which means when you do:

@echo off

The "C:\Users[User]" line before your command input will disappear. You can restore it with:

@echo on

Here all functions of ECHO explained:

  • @echo [on/off] (to set the command-line settings)

  • echo [text] (to print text to the screen)

  • echo. (to print an empty line to the screen)

  • echo (displays the current setting of the command-line)

  • echo /? (displays help for the command ECHO)

I hope I was able to help you.