developer tip

에코가 꺼지지 만 메시지가 표시됨

optionbox 2020. 11. 7. 09:15
반응형

에코가 꺼지지 만 메시지가 표시됨


박쥐 파일에서 에코를 해제했습니다.

@echo off

그런 다음 이렇게합니다

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

그리고 나는 얻는다 :

시스템이 지정된 경로를 찾을 수 없습니다.

그 두 에코 사이의 메시지.

이 메시지의 이유는 무엇이며 메시지가 에코 오프를 무시하는 이유는 무엇입니까?


마이크 Nakis는 말했다, 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"를 실행합니다.

"App"이라는 폴더가 없기 때문에 오류가 표시됩니다. 이러한 분할을 방지하려면 경로를 따옴표로 묶으십시오.


이것을 * .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텍스트 로 변경 한 다음 문제가 해결되었습니다.

참고URL : https://stackoverflow.com/questions/8823643/echo-off-but-messages-are-displayed

반응형