Получение нежелательного файла после выполнения bat-файла

#batch-file #bcp #sqlcmd

#пакетный файл #bcp #sqlcmd

Вопрос:

У меня есть пакетный файл, который извлекает одну строку из базы данных и использует эти данные в качестве переменной, чтобы использовать значение в качестве имени файла, и экспортирует данные в виде текстового файла.

Это работает нормально, за исключением экспорта двух текстовых файлов. Один из двух файлов является правильным файлом. Другой — ненужный файл. Имя файла «.txt» и содержит те же данные, что и первое.

Вот мой bat-файл:

 SET SQLCMD=sqlcmd -S server -d db -Q "set NOCOUNT 
on; select name from t1" -h-1

FOR /F "usebackq delims=, tokens=1" %%i IN (`%SQLCMD%`) DO (

CALL :PROCESSING %%i
)

:PROCESSING
SET COL1=%1

bcp "SELECT * FROM t1" queryout "C:Export%COL1%.txt." -S server -T -c
  

Что мне нужно исправить, чтобы получить только один файл?

Поскольку я новичок в программировании, если кто-нибудь мог бы помочь, я был бы очень признателен.

Спасибо,

Комментарии:

1. Это действительно должно читаться как, "C:Export%COL1%.txt." ?

2. Попробуйте Goto :eof после закрывающих скобок. Смотрите Goto /? и call /? . Вы выполняете свою команду дополнительное время после выхода из цикла.

3. @Noodles Это сработало! Большое вам спасибо. Что делают Goto /? и call /??? Куда мне поместить их в bat-файл? Не могли бы вы объяснить? Я зашел в Google, но не смог получить то, что они делают. Извините, я ничего не знаю : (

4. @Compo разве это не предполагается? Не могли бы вы объяснить, почему вы это сказали, пожалуйста?

5. Да, вы можете изменить call :processing %%i строку на bcp "SELECT * FROM t1" queryout "C:Export%%i.txt." -S server -T -c и просто полностью удалить раздел обработки