我有一個用於創建通過PHP日誌文件生成日期標記的文件名的批處理腳本。該文件名存儲在一個名爲logFile的windows批處理文件變量中。如何在Windows批處理腳本變量傳遞到管道命令
我想重用變量在我的發球管道但是命令似乎由管道創建的子命令不繼承或者從上下文中的父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