PHP를 통해 로그 파일을 만들기위한 날짜 스탬프 파일 이름을 생성하는 배치 스크립트가 있습니다. 이 파일 이름은 logFile이라는 Windows 배치 파일 변수에 저장됩니다.Windows 배치 스크립트 변수를 파이프 된 명령에 전달하는 방법
내 파이프 티 (pipe) 티 명령에서 변수를 다시 사용하고 싶습니다. 그러나 파이프에 의해 생성 된 하위 명령이 컨텍스트에서 부모 cmd 콘솔의 변수를 상속받지 못하거나 변수가없는 것처럼 보입니다.
누군가 임시 파일을 사용하거나 다른 배치 스크립트를 만들지 않고도이 문제를 해결하는 방법을 보여줄 수 있습니까?
감사합니다.
execJobs.bat
@echo off
SET logFile=| php -r "$d = new DateTime(); $dateString = $d->format('Ymd-His');
echo 'C:\\temp\\logs\\' . $dateString . '-exec.log';"
:: this is Ok
:: outputs c:\temp\logs\20150109-111031-exec.bat
%logFile%
:: This doesn't work
:: %logFile% in subCmd process is empty
:: how to inherit or pass environment/variable context to child processes?
call execJobs.bat | tee %logFile%
:: workaround, this doesn't work either
:: %logFile% is still empty in move command
:: call execJobs.bat | tee tmp
:: move /Y tmp %logFile%
:: del /F /Q tmp
출력 :
C:\temp\logs\20150109-114443-exec.log
execJobs.bat | tee
는'tee' 네이티브 배치 명령되지 않습니다 : 쉘 변수에 명령의 출력을 추가하면
나는 또한뿐만 아니라이 답변에서 몇 가지 정보를 함께 조합해서 : 매우 직관적되지 않습니다 . GnuWin32 도구를 사용하고 있습니까? – SomethingDark
예 [GnuWin32Tools] (http://unxutils.sourceforge.net/)의'tee.exe' 명령을 사용하고 있습니다. [BatchTee] (http://stackoverflow.com/questions/11239924/windows-batch-tee-command)도 작동합니다. – mark