Rishabh Bhargav Rishabh Bhargav - 4 months ago 18
MySQL Question

To get input date from user in batch file

I am trying to run a SQL Query through Batch File and when I am trying to do so I am getting


invalid argument error


Below is the batch file with which I am trying to run my SQL SCRIPT

:start

cls

@echo ------BILLING REPORT---------

@echo Please enter billing report Date in (YYYY/MM/DD)

@echo off

::set /P D = Enter Date:

::Date %Date% > Billing_Data.sql

PAUSE

sqlcmd -S database\instance_name -E -i "C:\Users\rb54761\Deskto\rb54761\Billing_Data_For_Certs_New.sql" > Output.txt -v Date = '2016-07-01'

:: -o "C:\Users\rb54761\Desktop\rb54761\Output.txt"

PAUSE

COPY C:\Users\rb54761\Desktop\rb54761\Output.txt C:\Users\rb54761\Desktop
PAUSE

goto start


for this i need to thing
1. when user input the date, data will fetch according to that date
2. i want to add that date in where clause so that data will fetch accordingly
Below is the where clause where i want to enter the data

WHERE
DateCompleted > CONVERT(DATETIME, '$(Date)', 102))

Answer

In you command line you use -v Date = '2016-07-01', and the single quotes are considered part of the sqlcmd variable. In your script you use '$(Date)', which becomes ''2016-07-01'', and the error should be fairly obvious.

Remove one set of quotes from either the command line or the script, and all should work.

If you want to quote the value in the command line to protect against poison characters or to include batch token delimiters like space or comma, then you must use double quotes: something like -v var = "Some value with spaces". In this case, the double quotes are not included in the value.

Comments