回声消息但显示消息

我在bat文件中closures了回声。

@echo off 

然后我做这样的事情

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

我得到:

该系统找不到指定的path。

这两个回声之间的消息。

这个消息的原因是什么?为什么消息忽略回显?

正如Mike Nakis所说, echo off只能防止打印命令,而不能打印结果。 要隐藏一个命令的结果,添加>nul到该行的末尾,并隐藏错误add 2>nul 。 例如:

 Del /Q *.tmp >nul 2>nul 

就像克里斯特·安德森(Krister Andersson)所说,你得到一个错误的原因是你的variables是用空格扩展的:

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

变为:

 if exist C:\My App\Installer ( 

意思是:

如果存在“C:\ My”,则用“(”作为命令行参数运行“App \ Installer”。

您看到错误,因为您没有名为“应用程序”的文件夹。 把引号放在path上以防止这种分裂。

将其另存为* .bat文件并查看差异

 :: print echo command and it's output echo 1 :: does not print echo command just it's output @echo 2 :: print dir command but not it's output dir > null :: does not print dir command nor it's output @dir c:\ > null :: does not print echo (and all other commands) but print it's 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 

“回声消除”不被忽略。 “echo off”意味着你不想让这些命令回应,它没有提到这些命令产生的错误。

你给我们看的线条看起来不错,所以问题可能不在那里。 所以,请给我们看更多的线路。 另外,请告诉我们INSTALL_PATH的确切值。

 @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; )