用户输入分配给1个变量BATCH的多个值

时间:2015-10-09 14:56:02

标签: sql-server batch-file batch-processing

我的批量文件看起来像这个

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

我希望用户能够在一行中输入多个ID。这些ID将使用 sqlScript.sql 从数据库中删除,但是此代码不允许我输入多个ID。

它将我输入的值视为1整数值。

例如,如果我输入 1,2,3 (作为单独的值),它会将其视为' 1,2,3'作为一个整体价值。

2 个答案:

答案 0 :(得分:1)

您的代码中存在以下几个问题:

  • 应该在开头清除变量colusn,以避免使用某些以前的值;
  • if子句没有意义,语法错误;
  • 要使用变量的值,您需要像%colu%;
  • 那样展开它们
  • 使用一个接一个的值,使用for循环;
  • sqlcmd命令行中间有一个换行符;

以下应该做你想做的事:

@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
)

答案 1 :(得分:-1)

使用FOR循环设置一个逗号(,)作为分隔符,然后使用另一个FOR循环来处理每个i.d的SQL命令。