
실행 파일을 다시 시작하는 배치 스크립트를 만들었고 오류를 표시하는 로그 파일로 출력하려고 합니다.
내 스크립트는
@echo on
timeout /t 03
set logfile=c:\users\administrator\desktop\C4W\Logs\status.log
echo starting system.exe at %date% %time% >> %logfile%
"./system.exe" -connection "sql instance" -model "model number" -username "admin" -password "" -id 2 >> %logfile%
Pause
Exit 0
보시다시피 내 실행 파일은 SQL 인스턴스와 SQL 데이터베이스 내의 모델에 연결됩니다. 배치 파일을 실행할 때 화면에 "입력에 기본 64가 아닌 문자, 2개 이상의 패딩 문자 또는 패딩 사이에 공백이 아닌 문자가 포함되어 있으므로 입력이 유효한 Base-64 문자열이 아닙니다"라는 오류가 표시됩니다. 문자”. 하지만 내 로그 파일에는 이 오류가 표시되지 않고 날짜와 시간이 표시된 상태로 실행 파일이 실행되었다는 것만 표시됩니다. >>& %logfile%에 & 기호를 넣으려고 했지만 cmd 창에 오류 메시지가 표시되지 않고 내 로그에도 표시되지 않습니다.
누구든지 내가 어디로 잘못 가고 있는지 볼 수 있습니까?
답변1
명령의 오류 출력을 표준 출력과 함께 로그 파일로 리디렉션하려면 >>logfile.txt 2>>&1
다음과 같이 명령에 추가합니다.
yourcommand.exe >>logfile.txt 2>>&1
2>>&1
로그 파일로 리디렉션하기 위해 StdOut 및 SteErr 스트림을 "결합"하려면 구문이 필요합니다 .