[英]Windows batch: variables set inside a loop are ignored
我在Windows批處理(* .bat)文件中使用以下代碼來運行多個SQL查詢:
set PSTR=QUERY1,QUERY2
for %%a in (%PSTR%) do (
set START=%date%:%time%
"C:\Program Files\PostgreSQL\9.4\bin\psql.exe" -f "D:\SQL\%%a.sql" -h localhost -p 5432 -U postgres db_tom
set END=%date%:%time%
echo %%a DEB %DEB% FIN %FIN% >> "D:\LOGS\log.txt"
回聲在log.txt
文件中寫入以下字符串:
QUERY1 START END
QUERY2 START END
循環內設置的變量將被忽略。 還有另一種寫此批處理的方法以便記下開始和結束日期時間的方法嗎?
setlocal enabledelayedexpansion
for %%a in ...(
set start=!date!:!time!
...
set end=!date!:!time!
echo !start! !end!
)
請咨詢數百篇有關delayed expansion
的SO文章setlocal enabledelayedexpansion
調用!var!
檢索運行時值而不是變量的解析時值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.