Подтвердить что ты не робот

Отключение эха, но отображаются сообщения

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

@echo off

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

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

и я получаю:

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

между этими двумя эхами.

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

4b9b3361

Ответ 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 решило проблему.