![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] CMD/BAT - Дополнить строки первой строчкой + добавить 3е значение |
|
CMD/BAT - [решено] CMD/BAT - Дополнить строки первой строчкой + добавить 3е значение
|
Новый участник Сообщения: 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 Потом все это загружается в старинную бд. |
|
Отправлено: 17:50, 21-03-2022 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать spb-nord, Как-то путано. Вот вариант
@Echo Off cls Set "FileIn=Z:\Box_In\infile.txt" Set "FileOut=Z:\Box_In\outfile.txt" Set "FirstNew=box place client_id" >"%FileOut%" (Echo %FirstNew%) Set /P FirstOld=<"%FileIn%" Echo %FirstNew% FOR /F "usebackq delims=" %%i In (`2^>nul More +1 "%FileIn%"`) DO ( (Set /P EndStr=%%i %FirstOld% ) >>"%FileOut%" (Call Echo %%i %FirstOld% %%EndStr%%) ) Pause Exit /B 1. Откуда берётся "box place client_id" или это некая постоянная? 2. Через "tab" или через пробел? Что такое "tab" - приведите код символа 3. Третье значение - постоянная для всех строк или для каждой строки своя? |
------- Отправлено: 18:32, 21-03-2022 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Спасибо за ответ.
1. box place client_id это постоянная которая появляется во всех новых файлах. 2. Взято из примера самого файла. Прикрепил. 3. Третье для одного документа постоянная. Для другого может быть 444 к примеру, но так же на весь файл. |
Отправлено: 18:46, 21-03-2022 | #3 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Попробуйте. Здесь Tab присвоены не пробелы, а табуляция.
@Echo Off cls Set "FileIn=Z:\Box_In\infile.txt" Set "FileOut=Z:\Box_In\outfile.txt" Set "Tab= " Set "FirstNew=box place%Tab%client_id" rem Set "FirstNew=box%Tab%place%Tab%client_id" rem Set "FirstNew=box%Tab%%Tab%place%Tab%%Tab%client_id" (Set /P EndStr=Enter the third component ^> ) >"%FileOut%" (Echo %FirstNew%) Set /P FirstOld=<"%FileIn%" FOR /F "usebackq delims=" %%i In (`2^>nul More +1 "%FileIn%"`) DO ( >>"%FileOut%" (Echo %%i%Tab%%FirstOld%%Tab%%EndStr%) ) Pause Exit /B Результат
Я не понимаю, к чему привязан заголовок. Приведенный вариант даёт
box place client_id KB920673 P1-31-00-00 klwhjejhwlqjlkjrlejl KB920674 P1-31-00-00 klwhjejhwlqjlkjrlejl KB920675 P1-31-00-00 klwhjejhwlqjlkjrlejl KB920676 P1-31-00-00 klwhjejhwlqjlkjrlejl KB920677 P1-31-00-00 klwhjejhwlqjlkjrlejl box place client_id KB920673 P1-31-00-00 868686 KB920674 P1-31-00-00 868686 KB920675 P1-31-00-00 868686 KB920676 P1-31-00-00 868686 KB920677 P1-31-00-00 868686 |
------- Последний раз редактировалось megaloman, 21-03-2022 в 20:43. Отправлено: 20:17, 21-03-2022 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Спасибо огромное! Все супер
|
|
Отправлено: 11:25, 22-03-2022 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как получить значение параметра из реестра, добавить значение в текстовый файл etc.? | Dark Ange1 | Скриптовые языки администрирования Windows | 28 | 22-06-2022 14:37 | |
CMD/BAT - CMD/BAT Значение по условию | Don_abbadon | Скриптовые языки администрирования Windows | 7 | 29-11-2020 14:55 | |
CMD/BAT - Копирование первой строки из файла | MultiMax | Скриптовые языки администрирования Windows | 27 | 08-03-2017 14:14 | |
CMD/BAT - CMD/BAT разбор строки с символом перехода строки в конце. | Alex1254 | Скриптовые языки администрирования Windows | 0 | 19-09-2013 19:24 | |
CMD/BAT - [решено] Преобразование строки в простое число CMD/BAT | kelevara | Скриптовые языки администрирования Windows | 7 | 26-04-2013 16:55 |
|