Отключение эха, но отображаются сообщения
Я отключил эхо в файле bat.
@echo off
тогда я делаю что-то вроде этого
...
echo %INSTALL_PATH%
if exist %INSTALL_PATH%(
echo 222
...
)
и я получаю:
Система не может найти указанный путь.
между этими двумя эхами.
В чем причина этого сообщения и почему сообщение игнорирует эхо-сигнал?
Ответы
Ответ 1
Как Майк Накис сказал, 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" с помощью "(" в качестве аргумента командной строки.
Вы видите ошибку, потому что у вас нет папки с именем "Приложение". Поместите кавычки вокруг пути, чтобы предотвратить это расщепление.
Ответ 2
Сохраните это как *.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
Ответ 3
"echo off" не игнорируется. "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;
)
Ответ 5
Для меня эта проблема была вызвана неправильным форматом кодировки файлов. Я использовал другой редактор, и он был сохранен как UTF-8-BOM
поэтому самая первая строка, которая у меня была, была @echo off
но @echo off
ней был скрытый символ.
Поэтому я изменил кодировку на обычный старый текст ANSI
, и затем проблема исчезла.
Ответ 6
Да, это сработало и для меня - хотя @echo off было не на первой строчке. В моем случае изменение формата кодировки файла с UTF-8 на ANSI решило проблему.