Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
alinak
0 / 0 / 0
Регистрация: 24.05.2015
1

Обработка текстовых файлов

21.04.2012, 03:03. Просмотров 1481. Ответов 0
Метки нет (Все метки)

Добрый вечер.
Вроде бы простой батник, но работать как надо не хочет, а в чем проблема понять не могу.
Итак есть файл с именами таблиц, в каждой строке по два имени разделенных двоеточием. Причем имя состоит из двух частей разделенных точкой. Ну в данный момент в файле всего одна строка в целях отладки.
Первый for должен считать оба имени таблиц в переменные i и j.
Затем во втором for одно из имен таблиц разбивается на отдельные составляющие: имя схемы и имя таблицы и затем подставляются в sql-запрос.
Дальше я пытаюсь сгенерить имя файла и вывести его на экран.
Но после запуска этого батника получается полная ерунда.
Сам батник:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
for /F "delims=: tokens=1,2" %%i in ("W:\Files\SQL_batch\table_names.txt") do ( 
set otn=%%i
set ntn=%%j
echo %ntn%
for /F "delims=. tokens=1,2" %%k in ("%ntn%") do (
set q="SELECT NAME FROM SYSIBM.SYSCOLUMNS WHERE UPPER(TBCREATOR) = UPPER('%%k') AND UPPER(TBNAME) = UPPER('%%l') ORDER BY TBCREATOR, TBNAME, COLNO"
echo %q%
set fn=%ntn%.sql
echo %fn%
)
echo %%i>>"W:\Files\SQL_batch\old_table_names.txt"
)
Результат после запуска:


W:\Files\SQL_batch>for /F "delims=: tokens=1,2" %i in ("W:\Files\SQL_batch\table_names.txt") do (
set otn=%i
set ntn=%j
echo
for /F "delims=. tokens=1,2" %k in ("") do (
set q="SELECT NAME FROM SYSIBM.SYSCOLUMNS WHERE UPPER(TBCREATOR) = UPPER('%k') AND UPPER(TBNAME) = UPPER('%l') ORDER BY TBCREATOR, TBNAME, COLNO"
echo
set fn=".sql"
echo
)
echo %i 1>>"W:\Files\SQL_batch\old_table_names.txt"
)

W:\Files\SQL_batch>(
set otn=W
set ntn=\Files\SQL_batch\table_names.txt
echo
for /F "delims=. tokens=1,2" %k in ("") do (
set q="SELECT NAME FROM SYSIBM.SYSCOLUMNS WHERE UPPER(TBCREATOR) = UPPER('%k') AND UPPER(TBNAME) = UPPER('%l') ORDER BY TBCREATOR, TBNAME, COLNO"
echo
set fn=".sql"
echo
)
echo W 1>>"W:\Files\SQL_batch\old_table_names.txt"
)
ECHO is on.


Мне непонятно почему переменным ничего не присваивается и почему все команды отрабатывают дважды, хотя во входном файле только одна строка со следующим содержанием:
xxx.yyyyy:zzz.pppppp

Подскажите пожалуйста чего не хватает или что лишнее.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2012, 03:03
Ответы с готовыми решениями:

Архивация текстовых файлов
Привет всем!!! У меня такая проблема на работе ... есть папка и там под папки и...

Перекодировка текстовых файлов
Сбрасывают на диск файлы txt в кодировке OEM-866 и WIN-1251, нужен батник...

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

Создание текстовых файлов по очереди
Нужно сделать 4 текстовых файлов с содержанием "Отличный результат" но так,...

Создать 100 текстовых файлов
У нас есть bat файл. В него надо прописать алгоритм который будет создавать 100...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2012, 03:03

Копирование текстовых файлов по датам
Здравствуйте. Помогите, пожалуйста, решить задачку. Есть несколько текстовых...

Объединение текстовых файлов в один
Есть каталог с кучей однотипных файлов .txt. Нужно их объединить в один. Код...

Редактирование текстовых файлов в cmd
Добрый день, коллеги. Есть простенькая задача, которую можно запилить через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru