Я хочу получить данные определенной даты. Если пользователь предоставит?В противном случае он извлекает дату T-1, которая в данный момент загружается.Через пакетный файл - PullRequest
0 голосов
/ 09 июня 2018

Я создал командный файл, который извлекает данные 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

1 Ответ

0 голосов
/ 09 июня 2018

Требуется значение по умолчанию, если пользователь не вводит что-то другое.Это довольно просто, потому что set /p оставляет переменную без изменений, когда пользователь просто нажимает ENTER.Поэтому просто задайте значение по умолчанию, прежде чем спрашивать пользователя:

set "result=defaultValue"
set /p "result=Enter date ([ENTER] for default "%result%"): "
echo %result%

Вы должны добавить немного кода, чтобы проверить, является ли введенная пользователем строка верной датой. Здесь является примером.

...