Эхо выключено, но отображаются сообщения


Я выключил echo в файле bat.

@echo off

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

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

а я:

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

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

что может быть причиной этого сообщения и почему сообщение игнорирует echo off?

5 59

5 ответов:

как Майк Nakis сказал:echo off только предотвращает печать команд, а не результатов. Чтобы скрыть результат выполнения команды add >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" с " ("в качестве аргумента командной строки.

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

Сохранить как *.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

"echo off" не игнорируется. "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;
)

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

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