Rako1
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору bytie Боюсь там, в строке может быть два знака "=". Правда, не всегда. Но, как говорится... Можно ли в csvq копировать подстроку, начиная с N-го по счёту символа в строке? Fenrizz Код: @echo off for /f tokens^=1^,*^ delims^=^= %%A in (1.txt) do ( for /f tokens^=1^,*^ delims^=^= %%C in (2.txt) do if /I "%%A"=="%%C" echo %%A=%%D >>1_temp.txt) ren 1_temp.txt 1.txt | Работает не так как надо. В новый файл 1_temp.txt (а должно кстати в 1.txt) попадает только та Подстрока, которая есть в 2.txt, а остальные из 1.txt пропадают, а должны оставаться. Вижу, в коде используется разделитель. То есть знак "=". Я прав? Если да, то прошу переделать. Надо копировать подстроку, взятую начиная с определённого, N-го по счёту символа в строке. Для каждой подстроки - это своё значение и я укажу его сам. Вы только мне скажите, куда его вписывать. То есть в коде должно быть столько участков, сколько нужно скопировать Значений из 2.txt. А у каждой Подстроки свои длины, которые я укажу вручную. Для каждой подстроки свой участок кода, потому что копировать все подстроки нужно за один запуск батника, и я естественно не буду его редактировать для копирования каждой подстроки по отдельности. Это моя ошибка, что я не указал это вначале, извините. Каждую Подстроку надо в батнике тоже указать как подстроку, то есть текстом, чтобы знать, что искать. Потом ещё одно. Тоже сразу не указал. Мне надо будет собирать Значения из разных файлов в файл 1.txt, а не только из 2.txt. Ещё нужно будет из 3.txt. И скорее всего в дальнейшем появятся ещё файлы, из которых надо собирать Значения. А ещё Значения надо собирать не только в 1.txt, а ещё в 0.txt. И, скорее всего, в дальнейшем появятся ещё файлы, в которые надо собирать значения. То есть я, потом буду этот батник редактировать, писать в нём новые участки для тех новых Подстрок, значения которых мне в будущем тоже понадобится копировать. И также буду указывать новые файлы, значения из которых мне в будущем нужно будет копировать. Длины Значений в разных файлах, из которых их надо собирать разные. В первом сообщении я написал, что эти длины одинаковые, что было ошибкой. То есть для каждой Подстроки нужно указать свою длину Значения цифрой, она для этой Подстроки будет фиксированная. А цифрой - чтобы потом я имел возможность поменять эту цифру. В 1_temp.txt попадает Подстрока со Значением и при следующем запуске батника это же содержимое добавляется в конец файла ещё раз, а должно быть так: содержимое файла 1.txt не меняется за исключением Значений только тех Подстрок, которые я укажу в самом батнике. Это тоже моя ошибка, что я не указал это вначале, извините. То есть 1.txt - это статичный файл, в котором должны быть актуальные Значения для Подстрок. Актуальность будет достигаться батником. А файл 2.txt - это часто обновляющийся (сам по себе) справочник этих Значений. Но в файле 1.txt есть ещё много строк, кроме тех, Значения которых нужно обновить с помощью батника. И все эти строки должны там остаться. Только Значения указанных Подстрок должны обновиться. И в файле 2.txt ещё много строк, кроме тех, Значения которых нужно из него брать. То есть задачу нужно обозначить так. Далее, чтобы не было путаницы, буду писать Параметр1 вместо Подстрока1. Есть файлы: 1.txt: Параметр1Значение3 Парам2Значение1 Пар6Значение9 2.txt: Пар3Значение5 Парам2Значение8 Параметр1Значение7 Нужно: Взять из 2.txt Значение, соответствующее Параметр1 и поместить его в 1.txt вместо того Значения, которое там есть у Параметр1. Взять из 2.txt Значение, соответствующее Парам1 и поместить его в 1.txt вместо того Значения, которое там есть у Парам1. Как видим, длина у Параметр1 9 символов. Длина его Значения 9 символов. Длина у Парам2 6 символов. Длина Значения у Парам2 9 символов. Батник: Найти в 2.txt строку, содержащую Параметр1 и скопировать подстроку длиной 9 символов, начиная с 10-го символа. Найти в 1.txt строку, содержащую Параметр1 и вставить скопированную из 2.txt подстроку на место, начиная с 10-го символа. Найти в 2.txt строку, содержащую Парам2 и скопировать подстроку длиной 9 символов, начиная с 7-го символа. Найти в 1.txt строку, содержащую Парам2 и вставить скопированную из 2.txt подстроку на место, начиная с 7-го символа. После запуска батника должно получиться так: 1.txt: Параметр1Значение12 Парам2Значение8 Парс6Значение9 Порядок строк в файле 1.txt тоже не должен меняться. Во всех файлах ещё есть другие строки, не только содержащие Параметры и Значения, но и строки-комментарии и ещё много других строк. Все эти комментарии и другие строки, которые есть в этих файлах, не должны мешать и не должны изменяться в результате работы батника. | Всего записей: 893 | Зарегистр. 17-12-2007 | Отправлено: 01:16 25-12-2021 | Исправлено: Rako1, 09:52 25-12-2021 |
|