我关闭了bat文件中的echo。
@echo off
然后我做这样的事情
...
echo %INSTALL_PATH%
if exist %INSTALL_PATH%(
echo 222
...
)
我得到:
该系统找不到指定的路径。
这两个回声之间的消息。
此消息的原因可能是什么,为什么消息会忽略回显?
我关闭了bat文件中的echo。
@echo off
然后我做这样的事情
...
echo %INSTALL_PATH%
if exist %INSTALL_PATH%(
echo 222
...
)
我得到:
该系统找不到指定的路径。
这两个回声之间的消息。
此消息的原因可能是什么,为什么消息会忽略回显?
@echo off
这仅表示不应将任何命令回显到终端。
Answers:
正如Mike Nakis所说,echo off
仅阻止打印命令,而不阻止结果。要隐藏命令结果,请添加>nul
到该行的末尾,并隐藏错误,请添加2>nul
。例如:
Del /Q *.tmp >nul 2>nul
就像克里斯特·安德森(Krister Andersson)所说的那样,出现错误的原因是您的变量使用空格扩展:
set INSTALL_PATH=C:\My App\Installer
if exist %INSTALL_PATH% (
成为:
if exist C:\My App\Installer (
意思是:
如果存在“ C:\ My”,请以“(”作为命令行参数运行“ App \ Installer”。
您看到此错误,因为没有名为“ App”的文件夹。在路径两边加上引号以防止这种分裂。
将其另存为* .bat文件并查看差异
:: 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
“回音”不被忽略。“回显”表示您不希望命令回显,它不说明命令所产生的错误。
您向我们显示的行看起来还不错,所以问题可能不存在。因此,请向我们显示更多行。另外,请向我们显示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;
)
IF EXIST "%INSTALL_PATH%"
。
C:\etc etc\test
。
if exist "%INSTALL_PATH%" (...