Windows 배치 파일의 한 줄에 여러 명령


111

Unix에서는 다음과 같이 여러 명령을 한 줄에 넣을 수 있습니다.

$ date ; ls -l ; date

Windows에서 비슷한 것을 시도했습니다.

 > echo %TIME% ; dir ; echo %TIME

그러나 그것은 시간을 인쇄하고 명령을 실행하지 않습니다 dir.

이것을 어떻게 할 수 있습니까?


답변:


181

사용하다:

echo %time% & dir & echo %time%

이것은 메모리에서 in bash및 기타 UNIXy 쉘의 세미콜론 구분 기호와 동일합니다 .

이 또한의 &&(나 ||) 최초의 성공 (또는 실패) 경우에만 두 번째 명령을 실행하는,하지만 하나의 앰퍼샌드는 &여기에서 찾고있는 것입니다.


그러나 환경 변수는 실행보다는 읽기에서 평가되는 경향이 있기 때문에 동일한 시간을 제공 할 가능성이 있습니다.

지연된 확장을 켜면이 문제를 해결할 수 있습니다.

pax> cmd /v:on /c "echo !time! & ping 127.0.0.1 >nul: & echo !time!"
15:23:36.77
15:23:39.85

이는 명령 줄에서 필요합니다. 스크립트 내에서이 작업을 수행하는 경우 다음을 사용할 수 있습니다 setlocal.

@setlocal enableextensions enabledelayedexpansion
@echo off
echo !time! & ping 127.0.0.1 >nul: & echo !time!
endlocal

답변 해주셔서 감사합니다. 문제는 부분적으로 작동한다는 것입니다. 첫 번째와 마지막 % time %은 명령 (중간)이 완료되는 데 최소 40 초가 걸리더라도 동일한 시간을 인쇄합니다. (dir 명령 대신 스크립트를 실행합니다)
Raghuram

1
환경 변수는 명령이 실행되는 것이 아니라 읽을 때 평가되기 때문 입니다. 답변을 업데이트하겠습니다.
paxdiablo

여전히 문제가 지속됩니다. 스크립트는 코드 1로 종료됩니다. 그러나 여전히 두 번째 에코는 같은 시간에 인쇄됩니다.이 작업을 참조하십시오. 12 : 57 : 56.93 스레드가 3 개 실행되는 동안 종료되었습니다. 12 : 57 : 56.93
Raghuram

3
나는 문제를 피하는 대신 time /t(또는 echo.|time) 을 사용하는 경향이 있습니다 echo %time%.
Joey

1
다음 호출에서 % errorlevel %을 올바르게 얻는 방법에 대한 아이디어가 있습니까?
BradLaney
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.