回声消息但显示消息
我在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; )