spb-nord
21-03-2022, 17:50
Добрый день.
В фирме 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
Потом все это загружается в старинную бд.
В фирме 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
Потом все это загружается в старинную бд.