Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   С помощью bat-ника перенести нужное количество строк в одну в текстовом файле (http://forum.oszone.net/showthread.php?t=300625)

Rz78 02-06-2015 12:07 2514062

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

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

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

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

Georgio 02-06-2015 12:55 2514093

Код:

@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 02-06-2015 13:15 2514099

Как-то так:
Скрытый текст
Код:

@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, в конце строк лишний табулятор вкрался ;).

Rz78 02-06-2015 15:30 2514164

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

Iska 02-06-2015 16:21 2514191

Цитата:

Цитата Rz78
пустые строки при переносе были отделены табуляцией (т.к. в некоторых ситуациях они бывают заполнены »

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

Rz78 06-06-2015 13:43 2515492

Попробую пояснить в картинках.
есть такой текстовый документ с данными
Скрытый текст
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 ... и т.д.

Iska 06-06-2015 15:06 2515506

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

Rz78 06-06-2015 15:10 2515507

W_7_Pro x86


Время: 21:33.

Время: 21:33.
© OSzone.net 2001-