回声关闭但显示消息

问题描述 投票:0回答:6

我在bat文件中关闭了echo。

@echo off

然后我做这样的事情

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

我得到:

系统找不到指定的路径。

这两个回声之间的消息。

此消息的原因是什么以及为什么消息忽略回显关闭?

batch-file cmd echo
6个回答
127
投票

正如 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”的文件夹。在路径周围加上引号以防止这种分裂。


51
投票

将其另存为 *.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

12
投票

“回声关闭”不会被忽略。 “echo off”意味着您不希望命令回显,它不会说明命令产生的错误。

您向我们展示的线条看起来没问题,所以问题可能不存在。所以,请向我们展示更多线路。另外,请告诉我们 INSTALL_PATH 的确切值。


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
投票

对我来说,这个问题是由文件编码格式错误引起的。 我使用了另一个编辑器,它被保存为

UTF-8-BOM
,所以我的第一行是
@echo off
,但它前面有一个隐藏的字符。

所以我将编码更改为普通的旧

ANSI
文本,然后问题就消失了。


-1
投票

将文档另存为 ANSI

你可以使用记事本++

© www.soinside.com 2019 - 2024. All rights reserved.