|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Чтение из двух файлов с выводом в один |
|
CMD/BAT - [решено] Чтение из двух файлов с выводом в один
|
Пользователь Сообщения: 94 |
Добрый день!
Подскажите, пожалуйста, как реализовать такую задачу. Есть два файла 123.txt и 456.txt (см. вложение) с числом на каждой строчке, а нужно получить файл 789.txt с таким содержанием: Первое число из 123.txt#Первое число из 456.txt Второе число из 123.txt#Второе число из 456.txt Третье число из 123.txt#Третье число из 456.txt ... Возможно ли такое? Я возился с циклами for /l и с командой more, использовал счётчики строк, но так ничего толкового и не добился... А more вообще почему-то не работает на Windows 8 (выдаёт сообщение, что "слишком много аргументов для командной строки" даже при выполнении простой задачи): |
|
Отправлено: 10:39, 06-08-2013 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать для небольших по размеру файлов и до 9999 строк:
|
Последний раз редактировалось amel27, 06-08-2013 в 11:53. Отправлено: 11:48, 06-08-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 94
|
Профиль | Отправить PM | Цитировать amel27, спасибо Вам огромное! Хм... call call :D Очень интересная конструкция) А можете, если Вас не затруднит, объяснить принцип работы скрипта?
|
Отправлено: 13:08, 06-08-2013 | #3 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 14:09, 06-08-2013 | #4 |
Пользователь Сообщения: 94
|
Профиль | Отправить PM | Цитировать megaloman, и Вам спасибо большое! Ваш вариант мне ближе и доступней
![]() |
|
Отправлено: 14:47, 06-08-2013 | #5 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Bruce Wayne:
первый FOR считывает содержимое 1-го файла в массив переменных (префикс имени $): for /f "tokens=1,2 delims=[] " %%a in ('^<123.txt find /n /v ""') do ( set "$a=000%%a" call set "$%%$a:~-4%%=%%b" ) SET $ второй FOR построчно читает 2-й файл, добавляет в начало значение переменной массива (выборка из массива по номеру строки) и выводит результат Цитата Bruce Wayne:
@echo off set "$1=++" set "$2=$1" set "$3=$2" set $ pause echo %$3% echo %%%$3%%% call echo %%%$3%%% call echo %%%%%%%$3%%%%%%% call call echo %%%%%%%$3%%%%%%% pause |
||
Отправлено: 15:43, 06-08-2013 | #6 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать amel27, приветствую.
Можно поинтересоваться, в чем замысел 4-значного формата индекса? Возможность вывести в последовательном порядке через set $ ? В самом коде по сути можно без этого? megaloman, синхронное чтение - супер ! И вариант от меня: @echo off Setlocal EnableExtensions set src1=123.txt set src2=456.txt set dest=789.txt for /f %%? in ('find /c /v "" ^< "%src1%"') do set lines=%%? < "%src1%" ( for /l %%? in (1 1 %lines%) do set /p "$1.%%?=" ) < "%src2%" > "%dest%" ( for /l %%? in (1 1 %lines%) do set /p "$2.%%?="& call echo %%$1.%%?%%#%%$2.%%?%% ) |
------- Отправлено: 02:45, 07-08-2013 | #7 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Diskretor:
![]() первый вариант читал в массив оба файла - в этом случае без сортировки не обойтись |
|
Отправлено: 05:21, 07-08-2013 | #8 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать ORLY ?
|
------- Отправлено: 02:03, 08-08-2013 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Помогите выбрать один телефон из двух | VALERIAM | Мобильные ОС, смартфоны и планшеты | 4 | 04-04-2013 23:10 | |
компьютер включается один раз из двух | Shiroky | Непонятные проблемы с Железом | 12 | 27-07-2009 23:21 | |
БП и ИБП - Помогите выбрать БП, один из двух Thermaltake. | amzir | Прочее железо | 1 | 10-04-2008 22:28 | |
Не работает один привод из двух | Angel_19 | Microsoft Windows Vista | 7 | 06-03-2007 16:03 | |
Из двух винтов собрать один | Knight Deadly | Накопители (SSD, HDD, USB Flash) | 11 | 31-12-2005 08:41 |
|