0

我已经在批处理文件中编写了 foll sql 查询以从远程服务器获取结果。

SQLCMD -S "ServerName -U "uer" -P "Pass" -W -d"Interface" -Q"select LEFT(Zone_Prefix,5)+case when RIGHT(Zone_prefix,1)='N' then '_NORTH_WING' ELSE '_SOUTH_WING' END AS [Zone Name],cnt as [Zone Count] from ( SELECT  LEFT([Zone Name], 6) AS Zone_Prefix,SUM([Zone Count]) cnt FROM [Interface].[dbo].[VwZoneCount] WHERE [Zone Name] IN ('EB2GFNMZ','EB2GFSMZ','EB2GFNZ1','EB2GFSZ1','EB21FNZ1','EB21FSMZ','EB21FSZ1','EB22FNZ1','EB22FSZ1','EB22FSMZ','EB23FNMZ','EB23FNZ1','EB23FNZ2','EB23FNZ3','EB23FSMZ','EB23FSZ1','EB23FSZ2','EB24FNMZ','EB24FNZ1','EB24FSMZ','EB24FSZ1','EB25FNMZ','EB25FNZ1','EB25FSMZ','EB25FSZ1','EB26FNMZ','EB26FNZ1','EB26FSMZ','EB26FSZ1','EB27FNZ1','EB27FSMZ') GROUP BY LEFT([Zone Name], 6))tbl" -s"    " -o"Output_hvac.xls"

我使用 task scheduler 每 4 小时执行一次此查询。目前,每次执行的结果都会被覆盖。每次执行后,我都需要将新结果附加或存储在带有Time Stamp的不同文件中。我主要关心的是放置一个时间戳并保留所有以前执行的数据。

谢谢

4

2 回答 2

1

为文件名添加时间戳当然是可能的,但批量操作很麻烦。

您的第一个附加选项要简单得多。消除您的-o选择,并改用附加重定向。添加时间戳只需要重定向的 ECHO 语句。

>>"Output_hvac.xls" echo %date% %time%
>>"Output_hvac.xls" SQLCMD ...your_options_minus_the_-o_option...

或者

>>"Output_hvac.xls" (
  echo %date% %time%
  SQLCMD ...your_options_minus_the_-o_option...
)
于 2013-02-26T14:00:22.967 回答
0

尝试:

-o "Output_hvac_%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%.xls"

输出应如下所示:

输出_hvac_20181016_919.xls

于 2018-10-16T08:31:22.423 回答