![]() |
CMD/BAT - Дополнить строки первой строчкой + добавить 3е значение
Добрый день.
В фирме 10 лет назад был написан парсер на маке. Который стоял на складе и его единственный функционал был в том, чтобы переделывать txt файл в необходимый. Мак сдох =) Думаю, можно все это сделать через VB но не силен. Подскажите пожалуйста. Пример 1 Текстовый документ имеет структуру, где первой строчкой идет наименование места а потом идет список из артикулов. Скрытый текст
P1-31-00-00
KB920673 KB920674 KB920675 KB920676 KB920677 Парсер подставлял первую строчку за каждой последующей строкой с расстоянием в tab и в конце предлагал ввести значение, которое добавлял еще раз через tab. Первую строка имела вид после манипуляций - box place client_id ( все тоже через tab) Скрытый текст
box place client_id
KQ023239 P1-31-00-00 123 KQ023252 P1-31-00-00 123 KQ023241 P1-31-00-00 123 KQ023249 P1-31-00-00 123 KQ023247 P1-31-00-00 123 KQ023245 P1-31-00-00 123 KQ023243 P1-31-00-00 123 KQ023248 P1-31-00-00 123 Начинаю с малого. На форуме нашел пример подходящий: Добавляет значение после каждой строчки. Но Set "Str=%~1" не подходит. Как можно указатель, чтобы брал значение из первой строки и присваивал ее и при этом предлагал ввести третье значение. Скрытый текст
@echo off
setlocal enableextensions enabledelayedexpansion set sSourceFile=C:\1\1.txt set sDestFile=2.txt if exist "%sSourceFile%" ( >"%sDestFile%" ( for /f "usebackq delims=" %%i in ("%sSourceFile%") do ( echo %%i Set "Str=%~1" ) ) ) else ( echo Can't find source file [%sSourceFile%]. exit /b 1 ) endlocal exit /b 0 Пример 2. Строчки которые нужно разбить идут через одну. Скрытый текст
P1-17-01-03
KQ021031 P1-16-02-01 KQ002469 На выходе парсер делал первую строчку с заголовком через tab - box place client_id и чередовал в строчку через одну Тут не присваивается третье значение. Только 2. Скрытый текст
box place client_id
KQ021031 P1-17-01-03 KQ002469 P1-16-02-01 Потом все это загружается в старинную бд. |
spb-nord, Как-то путано. Вот вариант
Код:
@Echo Off 1. Откуда берётся "box place client_id" или это некая постоянная? 2. Через "tab" или через пробел? Что такое "tab" - приведите код символа 3. Третье значение - постоянная для всех строк или для каждой строки своя? |
Вложений: 1
Спасибо за ответ.
1. box place client_id это постоянная которая появляется во всех новых файлах. 2. Взято из примера самого файла. Прикрепил. 3. Третье для одного документа постоянная. Для другого может быть 444 к примеру, но так же на весь файл. |
Попробуйте. Здесь Tab присвоены не пробелы, а табуляция.
Код:
@Echo Off Результат
Я не понимаю, к чему привязан заголовок. Приведенный вариант даёт
Код:
box place client_id Код:
Set "FirstNew=box%Tab%place%Tab%client_id" Код:
box place client_id Код:
Set "FirstNew=box%Tab%%Tab%place%Tab%%Tab%client_id" Код:
box place client_id |
Спасибо огромное! Все супер
|
Время: 23:48. |
Время: 23:48.
© OSzone.net 2001-