簡體   English   中英

Windows批處理:循環內設置的變量將被忽略

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM