Batch file 我想检索特定日期的数据,如果用户提供?否则,它将检索当前正在获取的T-1日期。通过批处理文件

Batch file 我想检索特定日期的数据,如果用户提供?否则,它将检索当前正在获取的T-1日期。通过批处理文件,batch-file,sqlcmd,Batch File,Sqlcmd,我创建了一个批处理文件,从数据库中检索T-1数据。但我想检索用户通过cmd输入的日期的回溯数据 你能帮我一下吗 我想检索特定日期的数据,如果用户提供?否则,它将检索当前正在获取的T-1日期: set qty=-1 :loop4weekends set "separator1=-" set "separator2=_" echo >"%temp%\%~n0.vbs" s=DateAdd("d",%qty%,now) echo>>"%temp%\%~n0.vbs" d=wee

我创建了一个批处理文件,从数据库中检索
T-1
数据。但我想检索用户通过cmd输入的日期的回溯数据

你能帮我一下吗

我想检索特定日期的数据,如果用户提供?否则,它将检索当前正在获取的T-1日期:

set qty=-1

:loop4weekends

set "separator1=-"
set "separator2=_"

echo >"%temp%\%~n0.vbs" s=DateAdd("d",%qty%,now)
echo>>"%temp%\%~n0.vbs" d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^&_
echo>>"%temp%\%~n0.vbs"         right(100+month(s),2)^&_
echo>>"%temp%\%~n0.vbs"         right(100+day(s),2)^&_
echo>>"%temp%\%~n0.vbs"         d
for /f %%a in ('cscript //nologo "%temp%\%~n0.vbs"') do set result=%%a
del "%temp%\%~n0.vbs"

endlocal& set "YY=%result:~0,4%" & set "MM=%result:~4,2%" & set "DD=%result:~6,2%" & set "daynum=%result:~-1%"

:: if the daynum is a weekend then loop to get the friday
set "weekend="

if %daynum% EQU 1 set weekend=1&set "qty=-3"
if %daynum% EQU 7 set weekend=1&set "qty=-2"
if defined weekend goto :loop4weekends

set "day=%YY%%separator1%%MM%%separator1%%DD%"
set "day1=%YY%%separator2%%MM%%separator2%%DD%"

sqlcmd  -U %SQLServerUserName% -P %SQLServerPassword% -S %MachineIP% -Q "exec P_SP @companyFundIDs=N'',@inputDate=N''"  -d %ClientDB% -o "Fil_Trade_%day1%.csv" -s"," -W

ECHO CSV file has been generated successfully
pause

您需要一个默认值,除非用户输入其他内容。这很容易,因为当用户只需按ENTER键时,
set/p
保持变量不变。因此,在询问用户之前,只需定义一个默认值:

set "result=defaultValue"
set /p "result=Enter date ([ENTER] for default "%result%"): "
echo %result%
您应该添加一些代码来验证用户输入的字符串是否为有效日期。这就是一个例子