2015-10-09 3 views
0

МОЯ ПАРТИЯ файл выглядит такпользователя присваивается 1 переменной ПАРТИИ

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 

Я хочу, чтобы пользователь мог ввести несколько идентификаторов в одной строке. Эти идентификаторы будут удалены из БД, используя sqlScript.sql, однако этот код не позволяет мне вводить множество идентификаторов.

Он смотрит на значения, которые я вводил как 1 целое значение.

Для примера, если я ввожу 1,2,3 (в виде отдельных значений), он видит его как «1,2,3» как 1 целое значение.

+0

Ну, вы можете создать массив на основе разделителя и пройти через него. – Hozikimaru

+0

Я не понимаю цели инструкции 'if', для чего она предназначена? – aschipfl

ответ

1

Есть несколько вопросов, в вашем коде:

  • переменных colu и sn должны быть очищены в начале, чтобы избежать использования какого-то прежнего значения;
  • Предложение 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 
) 
+0

Отделять значения, вводимые столбцами или пробелами? Когда я пробовал пробелы, программа по-прежнему рассматривала оба значения как одно целое значение. – royalblue

+0

следующие разделители должны работать: * space * ',' ';' '=' – aschipfl

+0

В соответствии с 'FOR /?' Набор разделителей по умолчанию - это пробел и табуляция. – lit

-1

Используйте FOR петлевой набор набор запятой (,) в качестве разделителя используйте другой FOR цикл для обработки команд SQL для каждого идентификатора

Смежные вопросы