Echo off but messages are displayed

后端 未结 5 1816
梦谈多话
梦谈多话 2021-01-30 15:40

I turned off echo in bat file.

@echo off

then I do something like this

...
echo %INSTALL_PATH%
if exist %INSTALL_PATH%(
echo 22         


        
相关标签:
5条回答
  • 2021-01-30 16:13

    Save this as *.bat file and see differences

    :: print echo command and its output
    echo 1
    
    :: does not print echo command just its output
    @echo 2
    
    :: print dir command but not its output
    dir > null
    
    :: does not print dir command nor its output
    @dir c:\ > null
    
    :: does not print echo (and all other commands) but print its output
    @echo off
    echo 3
    
    @echo on
    REM this comment will appear in console if 'echo off' was not set
    
    @set /p pressedKey=Press any key to exit
    
    0 讨论(0)
  • 2021-01-30 16:23

    For me this issue was caused by the file encoding format being wrong. I used another editor and it was saved as UTF-8-BOM so the very first line I had was @echo off but there was a hidden character in the front of it.

    So I changed the encoding to plain old ANSI text, and then the issue went away.

    0 讨论(0)
  • 2021-01-30 16:26
    @echo off
    // quote the path or else it won't work if there are spaces in the path
    SET INSTALL_PATH="c:\\etc etc\\test";
    if exist %INSTALL_PATH% (
       //
       echo 222;
    )
    
    0 讨论(0)
  • 2021-01-30 16:29

    "echo off" is not ignored. "echo off" means that you do not want the commands echoed, it does not say anything about the errors produced by the commands.

    The lines you showed us look okay, so the problem is probably not there. So, please show us more lines. Also, please show us the exact value of INSTALL_PATH.

    0 讨论(0)
  • 2021-01-30 16:30

    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.

    0 讨论(0)
提交回复
热议问题