Эхо выключено, но сообщения отображаются - PullRequest
66 голосов
/ 11 января 2012

Я отключил эхо в файле bat.

@echo off

тогда я делаю что-то вроде этого

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

и я получаю:

Система не может найти указанный путь.

сообщение между этими двумя эхо.

В чем может быть причина этого сообщения и почему оно игнорирует эхо?

Ответы [ 5 ]

109 голосов
/ 12 января 2012

Как сказал Майк Накис , echo off запрещает только печать команд, а не результатов. Чтобы скрыть результат команды, добавьте >nul в конец строки, а чтобы скрыть ошибки, добавьте 2>nul. Например:

Del /Q *.tmp >nul 2>nul

Как и Кристер Андерссон сказал, причина, по которой вы получаете ошибку, в том, что ваша переменная расширяется пробелами:

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

становится:

if exist C:\My App\Installer (

Что означает:

Если существует «C: \ My», запустите «App \ Installer» с «(» в качестве аргумента командной строки.

Вы видите ошибку, потому что у вас нет папки с именем «Приложение». Поместите кавычки вокруг пути, чтобы предотвратить это расщепление.

35 голосов
/ 26 мая 2016

Сохраните это как * .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
10 голосов
/ 11 января 2012

"эхо выкл" не игнорируется.«echo off» означает, что вы не хотите, чтобы команды отображались, оно ничего не говорит об ошибках, вызванных командами.

Строки, которые вы нам показали, выглядят нормально, поэтому проблема, вероятно, не в этом.Так что, пожалуйста, покажите нам больше строк.Также, пожалуйста, покажите нам точное значение INSTALL_PATH.

4 голосов
/ 11 января 2012
@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;
)
3 голосов
/ 23 февраля 2018

Для меня эта проблема была вызвана неправильным форматом кодировки файла. Я использовал другой редактор, и он был сохранен как UTF-8-BOM, поэтому самая первая строка, которая у меня была, была @echo off, но перед ней был скрытый символ.

Поэтому я изменил кодировку на обычный старый ANSI текст, и затем проблема исчезла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...