Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] объединение двух тхт файлом в один

Ответить
Настройки темы
CMD/BAT - [решено] объединение двух тхт файлом в один

Пользователь


Сообщения: 117
Благодарности: 1

Профиль | Отправить PM | Цитировать


есть два тхт файла, с одним выражением в каждой строке. нужно объединить два тхт в один, чтоб в итоге там было выражение файла 1 выражение файла два: хххх уууу. скрипты на сайте находил, но подходящего не подобрал. спасибо!

Отправлено: 02:13, 20-12-2015

 

Пользователь


Сообщения: 117
Благодарности: 1

Профиль | Отправить PM | Цитировать


нашел такой вариант, но он бесконечный
Код: Выделить весь код
@(for /f "usebackq delims=" %%i in ("2.txt") do @(for /f "usebackq delims=" %%j in ("1.txt") do @set var=%%j& set /a count+=1& cmd /v:on /c "if !count!==1 (echo !var:~3!;%%i) else (echo %%j;%%i)")& set count=)>"3.txt"

Отправлено: 02:16, 20-12-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


1. Пакетный файл — принципиально?
2. У них заведомо одинаковое количество строк?

Отправлено: 03:00, 20-12-2015 | #3


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Предположим, содержимое файла 1.txt:
Код: Выделить весь код
foo1
foo2
foo3
foo4
foo5
foo6
foo7
Содержимое 2.txt:
Код: Выделить весь код
bar1
bar2
bar3
Сам командный файл лежит в папке с вышеобозначенными файлами, то:
Код: Выделить весь код
@echo off
  setlocal
    call:getLineNumbers 1.txt l1
    call:getLineNumbers 2.txt l2
    if %l1% equ %l2% set "l3=%l1%"
    if %l1% gtr %l2% set /a "l3=%l1%-%l2%"
    if %l1% lss %l2% set /a "l3=%l2%-%l1%"
    >3.txt (for /f "tokens=1,* delims=:" %%i in (
      'findstr /nvc:"^" 1.txt'
    ) do (
      if %%i leq %l3% (
        for /f "tokens=1,* delims=:" %%k in (
          'findstr /nvc:"^" 2.txt ^| findstr /b %%i'
        ) do echo:%%j %%l
      )
    ))
  endlocal
exit /b

:getLineNumbers
  for /f %%i in (
    'find /v /c "" ^< %1'
  ) do set "%2=%%i"
exit /b
Принцип, полагаю, понятен, так что прочие свистоперделки сможете прикрутить сами.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:26, 20-12-2015 | #4


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Код: Выделить весь код
@echo off
setlocal

for /f "tokens=*" %%i in (1.txt) do call:set 1 "%%i"
set "cnt_1=%cnt%"

set "cnt="
for /f "tokens=*" %%i in (2.txt) do call:set 2 "%%i"

if %cnt% leq %cnt_1% set "cnt=%cnt_1%"

1>3.txt (

for /l %%i in (1,1,%cnt%) do (

	if defined line_1_%%i (
		for /f "tokens=2 delims==" %%j in ('set line_1_%%i') do 0>nul set /p="%%j "
	) else (0>nul set /p="")

	if defined line_2_%%i (
		for /f "tokens=2 delims==" %%j in ('set line_2_%%i') do echo %%j
	) else ( echo. )

))

goto:eof

:set
set /a cnt+=1
set "line_%1_%cnt%=%~2"

Последний раз редактировалось Foreigner, 20-12-2015 в 12:40.


Отправлено: 12:27, 20-12-2015 | #5


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off& setlocal
 
for /f "delims=" %%i in ('type "1.txt"') do (
 set/a m+=1,n=0
 for /f "delims=" %%j in ('type "2.txt"') do (
  set/a n+=1
  2>nul set/a 1/(m-n^)|| echo %%i %%j>>"3.txt"
 )
)
 
endlocal& exit/b
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:43, 20-12-2015 | #6


Пользователь


Сообщения: 117
Благодарности: 1

Профиль | Отправить PM | Цитировать


Iska, да, нужен был батник) я находил ваш такой же скрипт на wsh.
воспользовался скриптом от Georgio. все четко.
Foreigner, ваш скрипт отработал немного странно.
greg zakharov, и всем спасибо что отозвались и помогли

Отправлено: 13:02, 20-12-2015 | #7


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Цитата muslimdogger:
ваш скрипт отработал немного странно. »
Ради интереса, в чем была проблема?

Отправлено: 13:38, 20-12-2015 | #8


Пользователь


Сообщения: 117
Благодарности: 1

Профиль | Отправить PM | Цитировать


Foreigner, в 3.txt там строки были вперемешку

Отправлено: 16:42, 20-12-2015 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] объединение двух тхт файлом в один

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
БП и ИБП - Объединение двух внешних блоков питания по 60w в один. Techstep Прочее железо 10 27-02-2014 06:15
CMD/BAT - объединение двух .бат в один AbramovEV Скриптовые языки администрирования Windows 0 28-01-2014 10:38
Объединение двух разделов жесткого диска в один Atlant1984 Программное обеспечение Windows 2 06-12-2013 00:01
Route/Bridge - Объединение двух dial-up каналов в один Deke Сетевые технологии 1 22-10-2007 00:49
Объединение/склеивание двух DVD Video в один dascon Видео и аудио: обработка и кодирование 27 28-09-2007 20:40




 
Переход