Server 2012에서 배치 파일을 실행할 수 없습니다


1

이 사이트는 바위! Server 2012에서 간단한 .bat 파일을 실행하여 다른 서버를 핑하고 하나를 제외한 모든 줄을 필터링 한 다음 나중에 사용할 수 있도록 파일에 씁니다 (그 파일은 어딘가에 보내려고하지만 프로젝트입니다) 다른 토론을 위해!).

이 포럼을 검색하여 몇 가지 명령을 작성했으며이를 수행하는 데 필요한 명령이 있습니다. ms-dos에서 한 번에 하나씩 이러한 명령을 실행하면 작동합니다. 그러나 파일을 모두 박쥐 파일에 넣으면 무언가가 엉망이됩니다. 서버 운영 체제에 대한 경험이 많지 않아 누락 된 간단한 것일 수 있습니다. 도움을 주시면 감사하겠습니다.

여기 내 지시 사항이 있습니다

ping 10.18.89.154 >C:\pinglog.txt
FOR /F "skip=8 delims=" %i in (C:\pinglog.txt) do @echo %i >C:\TEMP.TXT
SET /P SHOW= < C:\TEMP.TXT
ECHO %SHOW% >C:\pinglog.txt

그리고 수동으로 실행할 때의 결과는 다음과 같습니다.

패킷 : Sent = 4, Received = 4, Lost = 0 (0 % loss),

그러나 배치 파일에서 해당 명령을 실행하면 cmd 창이 첫 번째 줄에 멈추고 cmd 창에 아래 텍스트가 표시되고 빈 파일이 생성됩니다 ...

C : \ Users \ administrator.WSI \ Documents> ping 10.18.89.154 1> C : \ pinglog.txt

이견있는 사람?

답변:


1

Server 2012에서 배치 파일을 실행할 수 없습니다

한 줄 명령으로 원하는 것을 수행하는 훨씬 간단한 방법은 다음과 같습니다.

ping 10.18.89.154 | findstr "Packets" > c:\pinglog.txt

위의 명령은 명령 줄이나 배치 파일에서 그대로 작동합니다.

다음 배치 파일은 개인 IP 주소로 네트워크에서 무언가를 핑할 수 없으므로 google.com을 핑 대상으로 사용합니다.

test.cmd :

ping www.google.com | findstr "Packets" > pinglog.txt

출력 예 :

C:\test>test

C:\test>ping www.google.com   | findstr "Packets"  1>pinglog.txt

C:\test>type pinglog.txt
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

C:\test>

에, 원래 명령을 사용 for /f하면 교체해야 할 명령 %과 함께 %%:

FOR /F "skip=8 delims=" %%i in (C:\pinglog.txt) do @echo %%i >C:\TEMP.TXT

해당 줄의 값을 분리하는 방법이 있습니까, 아니면 전체 줄만 생성 할 수 있습니까?

"수신 된"값만 다시 가져 오려는 이유는 해당 파일이 "0"인 경우이를 기반으로 경고를 트리거 할 수 있기 때문입니다.

다음 배치 파일은 "Received"값을 찾고 해당 값이이면 "Ping failed" 0를 출력하고 그렇지 않으면 아무것도 출력하지 않습니다.

보너스로 파일을 사용하지 않습니다.

echo "Ping failed"이것이 무엇인지 결정할 때 경고 명령으로 바꿀 수 있습니다 .

test.cmd :

@echo off
for /f "usebackq skip=8 tokens=7" %%i in (`ping 10.18.89.154`) do (
   set _result=%%i
   goto :done
   )
:done
if "%_result:~0,1%"=="0" echo "Ping failed"

추가 자료

%%parameter교체 가능한 매개 변수 : 배치 파일 사용 %%G(명령 행 %G)


0

원래 질문에 설명 된 것과 동일한 문제가있었습니다. 답변이 없습니다. 마지막으로 배치 파일에 대한 바로 가기를 만들어 문제를 해결했습니다. 바로 가기에서 배치 파일을 시작하면 파일이 예상대로 실행됩니다. 그렇지 않으면 첫 번째 줄에 멈 춥니 다.


당신이 작성한 것을 기반으로, 나는 당신이 원래 질문과 같은 문제가 없었던 것 같습니다. 그것은 구문을 다루었 고 귀하의 질문에는 구문 문제 해결 솔루션이 언급되어 있지 않습니다. 질문을주의 깊게 읽고 게시하기 전에 대화에 실제로 추가 할 내용이 있는지 확인하십시오.
music2myear 2016 년

이것은 원래 질문의 일부입니다. "ms-dos에서 한 번에 하나씩 이러한 명령을 실행하면 작동합니다. 그러나 배치 파일에서 해당 명령을 실행하면 cmd 창이 첫 번째 줄에 멈추고 아래 텍스트가 표시됩니다. cmd 창에서 빈 파일을 생성합니다 ... "이것은 원래 게시물에 명시된대로 직면하고 해결 한 문제입니다. 방금 인용 한 문제는 해결되지 않았습니다.
user2832948

답변 게시물에 해당 정보를 추가하면이 상황에 맞는 방법이 더 명확 해집니다.
music2myear

또한 OP가 "hang"이라는 단어를 사용할 때 올바른 용어를 사용하지 않습니다. PING 명령을 실행하고이를 텍스트로 출력 할 때, 모든 출력을 지정된 텍스트 파일로 경로 재 지정 했으므로 명령이 실행되는 동안 터미널에 쓰여지는 것은 없습니다. 이것은 정지처럼 보이지만 실제로는 아무것도 매달려 있지 않습니다. 그것은 단지 배경에서 일하고 있습니다. 출력을 리디렉션하는 데 시간이 걸리는 명령으로이 동작을 수행 할 수 있습니다. 실제 중단이있을 수 있지만 (프로그램에서 처리 할 수없는 오류가 발생했습니다) OP는 중단을 설명하지 않고 단순히 예기치 않은 동작입니다.
music2myear
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.