Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I'm have started to learn batch programming to go a little more deeper in the Windows Machines. In Internet I have seen some commands with echo like "@echo off" or "on" and also this: "echo." but I don't know what are they doing. If anyone can explain me the functions of the echo command, please answer me.

echo controls the output. if you con't want to see any commands that the batch file runs you call "echo off". if you don't want to see the command echo off itself, you add '@' before it. Tamar Jun 16, 2017 at 11:36 You can find out the purpose and usage of any batch command by typing the command and following it with /? - in this case, you'd type echo /? SomethingDark Jun 16, 2017 at 13:36

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.

    I wish to add that @echo on is also useful to debug batch scripts, to see what's going on when something seems not to work. – elzooilogico Jun 16, 2017 at 12:34 It's better to use echo(, as said by dbenham it always works (stackoverflow.com/a/3123194). – man Jun 16, 2017 at 12:34 @elzooilogico Yes, for only "command" applications. But if you want make an UI, it's better if you use echo off , because it's more comfortable and cleaner. – Antonio Gschossmann Jun 16, 2017 at 12:38 yes, always write @echo off in top of any script, but at development time, is helpful to turn it on above a problematic section of code to see command expansion and its output. of course, once the bug or typo is corrected, it must be removed. – elzooilogico Jun 16, 2017 at 13:02

    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:

  • When called with some arguments AFTER a space, it will output the arguments.
  • When called as echo. (no space) it will output just a blank line.
  • 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.

    It follows from this that if you try to echo just the word off, without quotes, it will turn off command printing instead. If you try to work around this by quoting the word "off", the output will include the quotes. The answer, thanks to @JeffZeitlin's comment below, is:

    In the presumably unusual case of wanting to echo just the word off or on (i.e., not a part of any other string), it turns out that echo.off and echo.on do the trick.

    In the presumably unusual case of wanting to echo just the word off or on (i.e., not a part of any other string), it turns out that echo.off and echo.on do the trick. – Jeff Zeitlin Jun 16, 2017 at 11:52 @JeffZeitlin, it works for the same reason as echo. The "." isn't a whitespace character, so it won't parse echo.on as the echo on command. Next this trick takes advantage of how the echo command assumes that the first character in the argument string is white space to be skipped over, except in this case it's skipping the ".". – Eryk Sun Jun 16, 2017 at 12:04 Very interesting! I didn't realise that the echo. form could have more text after it (nor that it didn't have to be a period, as Kappa points out in a comment on a different answer). Quotes are just echoed to the output, so that guess was no good. – Harun Jun 21, 2017 at 9:22

    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

    Thanks for contributing an answer to Stack Overflow!

    • Please be sure to answer the question. Provide details and share your research!

    But avoid

    • Asking for help, clarification, or responding to other answers.
    • Making statements based on opinion; back them up with references or personal experience.

    To learn more, see our tips on writing great answers.