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