Echo off but messages are displayed

Aleksandr Kravets picture Aleksandr Kravets · Jan 11, 2012 · Viewed 329k times · Source

I turned off echo in bat file.

@echo off

then I do something like this

...
echo %INSTALL_PATH%
if exist %INSTALL_PATH%(
echo 222
...
)

and I get:

The system cannot find the path specified.

message between those two echos.

What can be the reason of this message and why message ignores echo off?

Answer

Hand-E-Food picture Hand-E-Food · Jan 11, 2012

As Mike Nakis said, echo off only prevents the printing of commands, not results. To hide the result of a command add >nul to the end of the line, and to hide errors add 2>nul. For example:

Del /Q *.tmp >nul 2>nul

Like Krister Andersson said, the reason you get an error is your variable is expanding with spaces:

set INSTALL_PATH=C:\My App\Installer
if exist %INSTALL_PATH% (

Becomes:

if exist C:\My App\Installer (

Which means:

If "C:\My" exists, run "App\Installer" with "(" as the command line argument.

You see the error because you have no folder named "App". Put quotes around the path to prevent this splitting.