我关闭了bat文件中的echo。
@echo off
然后我做这样的事情
...
echo %INSTALL_PATH%
if exist %INSTALL_PATH%(
echo 222
...
)
我得到了:
系统找不到指定的路径。
这两个回声之间的消息。
这条消息的原因是什么以及为什么消息会忽略回声?
答案 0 :(得分:109)
如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”的文件夹。在路径周围加上引号以防止这种分裂。
答案 1 :(得分:35)
将其另存为* .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
答案 2 :(得分:10)
“echo off”不会被忽略。 “echo off”表示您不希望命令回显,它没有说明命令产生的错误。
你向我们展示的线条看起来还不错,所以问题可能不存在。所以,请告诉我们更多行。另外,请告诉我们INSTALL_PATH的确切值。
答案 3 :(得分:4)
@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;
)
答案 4 :(得分:3)
对我来说,这个问题是由文件编码格式错误引起的。
我使用了另一个编辑器,它保存为UTF-8-BOM
所以我的第一行是@echo off
,但前面有一个隐藏的字符。
所以我将编码更改为普通的ANSI
文本,然后问题就消失了。