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

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

Ответить
Настройки темы
CMD/BAT - Bat-ник создания текстовика

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


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

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


Здравствуйте нужна помощь. Стоит такая задача:
Есть база с данными (текстовой файл) в ней 200к строк ( к примеру), нужно из этой базы создать 200 текстовых, в каждом из которых будет 1к строк. Текстовики должны нумероватся мол 1.txt, 2.txt и так до 200.

Отправлено: 22:50, 17-09-2016

 

Ветеран


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

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


hancogruss, точно по 1024 строки?

Отправлено: 23:19, 17-09-2016 | #2



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

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


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


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

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


Цитата Iska:
hancogruss, точно по 1024 строки? »
Немного не понял вас, ну нужно базу нарезать по 1к строк из 200к или выше, что бы можно было менять, если вы про погрешность в 24 строки то нестрашно можно и в 1024

Отправлено: 23:30, 17-09-2016 | #3


Ветеран


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

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


В программировании указанный суффикс всегда означает 2^10.

Пакетный файл — в общем-то, не самое удобное средство для указанной задачи. Попробуйте PowerShell:
Скрытый текст
Код: Выделить весь код
$iCount        = 1024
$sSourceFile   = 'C:\Мои проекты\0008\текстовой файл.txt'
$sDestFilePath = 'C:\Мои проекты\0008'


$sContent = Get-Content -Path $sSourceFile
$iParts = [System.Math]::Truncate(([System.Array]$sContent).Length / $iCount + 1)

$iStartFrom = 0

for($i = 1; $i -le $iParts; $i++) {
    $sContent[$iStartFrom..$($iStartFrom + $iCount - 1)] | Set-Content -Path $($sDestFilePath + "\$i.txt")
    $iStartFrom += $iCount
}

Отправлено: 01:48, 18-09-2016 | #4


Ветеран


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

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


hancogruss,
Будьте внимательны! Основной файл будет удален, поэтому сделайте его копию в отдельную папку.
Во всех файлах будет по 1024 (или задайте свое) строки, кроме возможно последнего, уж сколько ему останется:
Код: Выделить весь код
@echo off
set "chs=1024"
set "f=file"& set "rf=txt"
:l
set/a b+=1
setlocal enabledelayedexpansion
 <"%f%%a%.%rf%">nul find/v "" || (del "%f%%a%.%rf%"& goto :eof)
 <"%f%%a%.%rf%">"%b%.%rf%" (for /f "delims=" %%a in ('more') do @set/a c+=1& if !c! leq %chs% echo %%a)
 <"%f%%a%.%rf%">"%f%%b%.%rf%" (more +%chs%)& del "%f%%a%.%rf%"
endlocal
set/a a+=1& goto l
exit/b
.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:14, 18-09-2016 | #5


Ветеран


Contributor


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

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


Вот вариант батника. Исходный файл сохраняется. Для выходных файлов организуется папка.
Код: Выделить весь код
@Echo Off

Set "InFile=D:\Delete\Box_In\baza.txt"

Set "OutDir=D:\Delete\Box_Out"
Set "OutExt=txt"

Set /A Quota=1024

Md "%OutDir%" 2>nul
Del "%OutDir%\*.%OutExt%" 2>nul

Set /A Count=0
FOR /F "usebackq delims=" %%s IN (`type "%InFile%" 2^>nul`) DO Call :FCount "%%s"
GoTo :Eof

:FCount
Set /A NewFile=%Count%/%Quota%+1
Set /A Count+=1
Set NewFile=%OutDir%\%NewFile%.%OutExt%
>>"%NewFile%" Echo %~1
Батник можно запускать многократно без ущерба исходному файлу.

alpap, Удаление исходного файла противоречит моим моральным принципам.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 18-09-2016 в 10:10.

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

Отправлено: 08:41, 18-09-2016 | #6


Ветеран


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

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


Цитата megaloman:
противоречит моим моральным принципам. »
Да и я не сторонник, ничего больше не пришло в голову на тот момент, а кому-то может и работы меньше, если по задаче надо удалять.

Отправлено: 01:19, 19-09-2016 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Bat'ник, который создает bat'ник и RDP ivanxam Скриптовые языки администрирования Windows 1 22-01-2016 14:10
CMD/BAT - [решено] Помогите написать Bat-ник vacs8 Тест-форум 1 23-01-2014 12:49
Разное - [решено] Переделайте c++ в bat-ник VokaMut Программирование и базы данных 5 10-08-2011 18:08
Разное - BAT'ник чтобы убить висту. Alex-4u Microsoft Windows Vista 1 19-04-2010 12:07
bat'ник mikola1983 Хочу все знать 10 03-08-2007 10:46




 
Переход