Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
CMD/BAT - С помощью bat-ника перенести нужное количество строк в одну в текстовом файле

Новый участник


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

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


Здравствуйте, помогите создать .bat в текстовом документе для переноса первых 10 строчек в одну, далее следующие 10 и так далее.
Необходимо чтобы совмещенные строчки разделялись не пробелами а табуляцией (для дальнейшей работы в .xls)
Пример текста:
Скрытый текст
01050
Фамилия И.О. *

Улица (Ж), д. 8, кв. 4
0.5235
-100.00

Абонплата не снята
Мировой
28/11/10 09:09:08
1243
Фамилия И.О. *

Улица (Ж), д. 9, кв. 5
...

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

 

Ветеран


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

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


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

<"example.txt">"new.txt" (
for /f "delims=" %%i in ('more') do (
 set/a n+=1
 for /f %%j in ('set/a n') do (
  if %%j gtr 8 (
   echo.
   set n=1
  )
  <nul set/p="%%i	"
 )
)
)

endlocal
exit /b
Это сообщение посчитали полезным следующие участники:

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



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

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


Ветеран


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

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


Как-то так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=%~1
set sDestFile=Result.txt

if defined sSourceFile (
	if exist "%sSourceFile%" (
		for /f "usebackq delims=" %%i in (
			`type "%sSourceFile%" ^| find.exe /c /v ""`
		) do set /a iLinesCount = %%~i
		
		set /a iMod = !iLinesCount! %% 10
		
		if !iMod! equ 0 (
			set /a iGroups = !iLinesCount! / 10
			
			<"%sSourceFile%" >"%sDestFile%" (
				for /l %%i in (1, 1, !iGroups!) do (
					for /l %%i in (1, 1, 9) do (
						set sVar=
						set /p sVar=
						<nul set /p sTempVar=!sVar!	
					)
					set sVar=
					set /p sVar=
					<nul set /p sTempVar=!sVar!
					echo.
				)
			)
		) else (
			echo Lines count [!iLinesCount!] in [%sSourceFile%] not a multiple of 10."
			exit /b 3
		)
	) else (
		echo Can't find source file [%sSourceFile%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source file^>
	exit /b 1
)

endlocal
exit /b 0

Имя исходного текстового файла задаётся параметром пакетного файла (также можно просто перетянуть исходный файл на пакетный файл в Проводнике).

Georgio, в конце строк лишний табулятор вкрался .
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:15, 02-06-2015 | #3


Новый участник


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

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


Спасибо! Оба батника работают. А нельзя сделать так, чтоб и пустые строки при переносе были отделены табуляцией (т.к. в некоторых ситуациях они бывают заполнены и при переносе в таблицу данные смещаются), а в данном случае они теряются.

Отправлено: 15:30, 02-06-2015 | #4


Ветеран


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

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


Цитата Rz78:
пустые строки при переносе были отделены табуляцией (т.к. в некоторых ситуациях они бывают заполнены »
Переведите на русский — как пустые строки могут быть «заполнены» (причём — в «некоторых ситуациях»). С пустой строки получается пустота:
Скрытый текст

Отправлено: 16:21, 02-06-2015 | #5


Новый участник


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

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


Попробую пояснить в картинках.
есть такой текстовый документ с данными
Скрытый текст
01050
Фамилия И.О. *

Улица (Ж), д. 8, кв. 4
0.5235
-100.00

Абонплата не снята
Мировой
28/11/10 09:09:08
1243
Фамилия И.О. *

Улица (Ж), д. 9, кв. 5
35.0000
-3000.00

Абонплата не снята
Пятьдесят
20/06/14 09:05:38
a-spivak
Фамилия И.О.

Улица (Ж), д. 6, кв. 10
85.7785


Пятьдесят
Пятьдесят
01/06/15 05:00:34

Скрытый текст

после применения батников получается не 10 столбцов, а по количеству заполненных строк
Скрытый текст

а необходимо чтоб было так
Скрытый текст

т.е. другими словами: 10 строчек должны стать 10 столбцами, следующие 10 ... и т.д.

Последний раз редактировалось Rz78, 06-06-2015 в 13:58.


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


Ветеран


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

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


Rz78, поскольку конфигурацию в профиле Вы не заполнили — спрашиваю: у Вас Windows 7 или выше?

Отправлено: 15:06, 06-06-2015 | #7


Новый участник


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

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


W_7_Pro x86

Последний раз редактировалось Rz78, 06-06-2015 в 15:16.


Отправлено: 15:10, 06-06-2015 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле InVariable Скриптовые языки администрирования Windows 4 22-05-2015 20:06
CMD/BAT - Подсчет количества строк в текстовом файле sl1mus Скриптовые языки администрирования Windows 3 28-06-2012 21:29
CMD/BAT - С помощью bat-ника найти и заменить текст в файле на текст из другого файла Nun-Nun Скриптовые языки администрирования Windows 1 08-03-2011 15:25
VBS/WSH/JS - Автоматизировать большое количество однотипных действий в текстовом файле mityamitya Скриптовые языки администрирования Windows 1 19-04-2010 04:34
Автоматизировать большое количество однотипных действий в текстовом файле mityamitya AutoIt 3 18-04-2010 17:44




 
Переход