问题
MY BATCH FILE LOOKS LIKE THIS
ECHO OFF
SET /P colu= Enter column name:
SET /P sn= Enter ID (Press enter when finished):
if %sn%={ENTER}
GOTO START
:START
sqlcmd -U USER -P PWORD -S SERVER -d DBNAME-i sqlSCRIPT.sql -o LOG.txt
-v delete=colu d_id=sn
I want the user to be able to enter multiple ids in a single line. Those ID's will be deleted from the DB using the sqlScript.sql however this code is not allowing me to enter multple ids.
It is looking at the values I enter as 1 whole value.
For an example if I enter 1,2,3 (as separate values) it sees it as '1,2,3' as 1 whole value.
回答1:
There are several issues in your code:
- the variables
colu
andsn
should be cleared at the beginning to avoid using some former value; - the
if
clause has no sense, and the syntax was wrong; - to use values of a variable, you need to expand them like
%colu%
; - to use one value after another, use a
for
loop; - there is a line-break in the middle of the
sqlcmd
command line;
The following should do what you want:
@ECHO OFF
SET colu=
SET sn=
SET /P colu= Enter column name:
SET /P sn= Enter ID (Press enter when finished):
FOR %%I IN (%sn%) DO (
sqlcmd -U USER -P PWORD -S SERVER -d DBNAME-i sqlSCRIPT.sql -o LOG.txt -v delete=%colu% d_id=%%I
)
回答2:
Use the FOR
loop an set set a comma(,) as the delimiter then use another FOR
loop to process the SQL commands for each i.d
来源:https://stackoverflow.com/questions/33041407/user-input-multple-values-assigned-to-1-variable-batch