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

Ответить
Аватара пользователя
Rz78

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

Сообщение Rz78 »

Здравствуйте, помогите создать .bat в текстовом документе для переноса первых 10 строчек в одну, далее следующие 10 и так далее.

Необходимо чтобы совмещенные строчки разделялись не пробелами а табуляцией (для дальнейшей работы в .xls)

Пример текста:



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

[spoiler]01050

Фамилия И.О. *



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

0.5235

-100.00



Абонплата не снята

Мировой

28/11/10 09:09:08

1243

Фамилия И.О. *



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

...[/spoiler]
Аватара пользователя
Georgio

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

Сообщение Georgio »

Код: Выделить всё

@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
Аватара пользователя
Iska

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

Сообщение Iska »

Как-то так:



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

[spoiler]

Код: Выделить всё

@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
[/spoiler]


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



Georgio, в конце строк лишний табулятор вкрался Изображение.
Аватара пользователя
Rz78

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

Сообщение Rz78 »

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

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

Сообщение Rz78 »

Цитата Rz78:



пустые строки при переносе были отделены табуляцией (т.к. в некоторых ситуациях они бывают заполнены
CMD/BAT - С помощью bat-ника перенести нужное количество строк в одну в текстовом файле




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



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

[spoiler]Изображение[/spoiler]
Аватара пользователя
Rz78

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

Сообщение Rz78 »

Попробую пояснить в картинках.

есть такой текстовый документ с данными



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

[spoiler]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[/spoiler]






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

[spoiler]Изображение[/spoiler]




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



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

[spoiler]Изображение[/spoiler]




а необходимо чтоб было так



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

[spoiler]Изображение[/spoiler]




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

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

Сообщение Iska »

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

Вернуться в «Скриптовые языки администрирования Windows»