|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Сформировать из 1 файла несколько файлов с разным числом строк |
|
CMD/BAT - Сформировать из 1 файла несколько файлов с разным числом строк
|
Новый участник Сообщения: 7 |
Здравствуйте! Помогите пожалуйста.
Задача: Есть текстовый файл 1.txt из 500 строк. Нужно сформировать из его строк 4 файла: 1. Содержащий первые 400 строк из 1.txt 2. Содержащий первые 300 строк из 1.txt 3. Содержащий первые 200 строк из 1.txt 4. Содержащий первые 100 строк из 1.txt Можно ли сделать это в 1 батнике? |
|
Отправлено: 22:21, 06-05-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Можно. Но проще будет сделать на WSH, або PoSH.
|
Отправлено: 23:13, 06-05-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать nastasa,
ну 500 еще не так много, конечно, у меня уходит 8сек и я скажу вам что это очень много для подобной операции |
Отправлено: 03:51, 07-05-2017 | #3 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Попробовал нарисовать гибрид батника и js-скрипта. Делается мигом.
@set @E=1; /* @Echo Off Set "FileIn=Z:\Soft_In\тра ля ля.TXT" Set "NStrok=400 300 200 100" Cscript //NoLogo /E:jscript "%~dpnx0" "%FileIn%" %NStrok% GoTo :Eof */ var i; var oArg = WScript.Arguments; var NCount=oArg.Count(); if (NCount<2) { WScript.Echo("═х ттхфхэ√ эхюсїюфшь√х рЁуєьхэЄ√"); } else { NCount=NCount-2; var NStrok= new Array(NCount); var NFile0=oArg(0); NFile0=NFile0.replace(/\\/g,"\\\\"); var FSO=WScript.CreateObject("Scripting.FileSystemObject"); var PFN=FSO.GetParentFolderName(NFile0); if (PFN != '') PFN+='\\\\'; var BN=FSO.GetBaseName(NFile0); var EN=FSO.GetExtensionName(NFile0); for (i=1; i<=NCount+1; i++) NStrok[i-1]=oArg(i); var j,ij,len; for (i=0; i<=NCount; i++) { for (j=i; j<=NCount; j++) { if (NStrok[i]>NStrok[j]) { ij=NStrok[i]; NStrok[i]=NStrok[j]; NStrok[j]=ij; } } } var F=FSO.OpenTextFile(NFile0,1,false); var Sall=F.ReadAll(); var Mass=Sall.split('\r\n'); F.Close(); len = Mass.length; Sall=''; j=0; ij=NStrok[j]; for (i = 0; i < len; ++i) { if (i != 0) Sall+='\r\n'; Sall+=Mass[i]; if (i+1==ij) { // WScript.Echo(PFN+BN+'-'+ij+'.'+EN); F=FSO.OpenTextFile(PFN+BN+'-'+ij+'.'+EN,2,true); F.Write(Sall); F.Close(); j++; while (j<=NCount) { if (ij != NStrok[j]) break; j++; } if (j>NCount) break; ij=NStrok[j]; } } } ![]() Гораздо интереснее написать батник из нескольких строк, чем несколько десятков в WSH-скрипте. |
|
------- Последний раз редактировалось megaloman, 10-05-2017 в 23:13. Отправлено: 23:04, 10-05-2017 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Цитата megaloman:
@echo off setlocal enableextensions enabledelayedexpansion echo Start: %time% for %%i in (400 300 200 100) do ( <"0001.txt" >"Out_%%i.txt" ( for /l %%j in (1, 1, %%i) do ( set /p sVar= echo !sVar! ) ) ) echo Finish: %time% endlocal exit /b 0 ![]() Цитата megaloman:
![]() |
||||
Отправлено: 03:30, 11-05-2017 | #5 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Iska, Позвольте не позволить!
![]() Вот фрагмент исходного файла и фрагмент после обработки
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 22222222222222222222222222222222222222222222222222222222222 3333333333333333333333333333333333333333333333333333333333333333333333333 444444444444444444444444444444444444444444444 55555555555555555555555555555555555555555555555555555 66666666666666666666666666666666666666666666 7 7777777777777777777777777 88888888888888888888888888888888888888888888 88888888 999999999999999 9999999999999 999 99 9999999999999999999 999999999999999999 000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 22222222222222222222222222222222222222222222222222222222222 3333333333333333333333333333333333333333333333333333333333333333333333333 3333333333333333333333333333333333333333333333333333333333333333333333333 444444444444444444444444444444444444444444444 55555555555555555555555555555555555555555555555555555 Режим вывода команд на экран (ECHO) отключен. Режим вывода команд на экран (ECHO) отключен. 66666666666666666666666666666666666666666666 7 7777777777777777777777777 88888888888888888888888888888888888888888888 88888888 999999999999999 9999999999999 999 99 9999999999999999999 999999999999999999 000000000000000000000 |
------- Отправлено: 11:03, 11-05-2017 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
![]() @echo off setlocal enableextensions enabledelayedexpansion echo Start: %time% for %%i in (400 300 200 100) do ( <"0001.txt" >"Out_%%i.txt" ( for /l %%j in (1, 1, %%i) do ( set /p sVar= echo.!sVar! set sVar= ) ) ) echo Finish: %time% endlocal exit /b 0 ![]() P.S. В любом случае останутся затыки с %, !, <, > и т.п. |
|
Отправлено: 12:15, 11-05-2017 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Перемещение файлов из списков по разным папкам | blither | Скриптовые языки администрирования Windows | 3 | 12-04-2016 13:43 | |
CMD/BAT - Создание .bat файла для выборки строк из .csv файла в .xlsx | GODolubOFF | Скриптовые языки администрирования Windows | 10 | 14-12-2015 15:34 | |
PowerShell - [решено] Замена строк из файла строками из файла в файле | bcubbs@fb | Скриптовые языки администрирования Windows | 6 | 24-01-2013 17:22 | |
CMD/BAT - Удалить несколько строк из файла | GhostKU | Скриптовые языки администрирования Windows | 1 | 01-09-2011 18:40 | |
Создание ролика из файлов с разным разрешением, FPS и уровнем громкости | Kzer-Za | Видео и аудио: обработка и кодирование | 1 | 20-08-2011 23:22 |
|