我在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"
echo在log.txt
文件中写入以下字符串:
QUERY1 START END
QUERY2 START END
忽略循环内设置的变量。是否有另一种方法来编写此批处理以便记下开始和结束日期时间?
答案 0 :(得分:0)
setlocal enabledelayedexpansion
for %%a in ...(
set start=!date!:!time!
...
set end=!date!:!time!
echo !start! !end!
)
请参阅有关delayed expansion
的数百个SO项中的任何一项 - setlocal enabledelayedexpansion
调用!var!
检索运行时值而不是变量的分析时间值的模式。