![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] копирование указанного количества случайных блоков текста из текстового файла |
|
CMD/BAT - [решено] копирование указанного количества случайных блоков текста из текстового файла
|
Ветеран Сообщения: 558 |
Здравствуйте. Подскажите возможно ли из txt файла, в котором куча блоков текста разделенные через символ //================== скопировать указанное количество случайных блоков в другой txt файл, а также после каждого блока добавить тот же символ //==================
Т.е. к примеру у меня txt файл: //================== блок1 //================== блок2 //================== блок3 //================== блок4 //================== ........................ //================== блок5000 //================== Я указал 5 случайных блоков. После применения кода должен получиться такой txt: блок453 //================== блок3126 //================== блок784 //================== блок5 //================== блок2451 //================== в блоках бывает такое, что пропускается 1 строка, т.е. присутствуют пустые строки, к примеру блок 2 с текстом: я гулял в лесу мне было хорошо |
|
Отправлено: 12:57, 26-08-2014 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Здравствуйте, Alexander_88.
@echo off chcp 1251>nul set quantity=5 set "source=example.txt" set "border=//==================" for %%i in ("%source%") do ( set new=%%~dpni_new%%~xi call copy nul %%new%%>nul ) set temp_file="%temp%\%random%.vbs" for /f %%i in (' findstr /rx "%border:/=\/%" "%source%"^| find /c /v "" ') do ( for /f %%j in (' set /a %%i-1 ') do ( if %%j lss %quantity% ( call:# %%j ) else ( call:# %quantity% ) ) ) del %temp_file% exit /b :# for /l %%i in (1 1 %1) do ( call set $%%random%%= %%i ) for /f "tokens=* delims=$0123456789=" %%i in (' set $^| findstr /v "^0" ') do ( echo WScript.StdOut.Write^(Split^(WScript.CreateObject^("Scripting.FileSystemObject"^).OpenTextFile^("%source%"^).ReadAll^(^),"%border%"^&vbCrLf^)^(%%i^)^)>%temp_file% ( cscript //nologo %temp_file% set /p="%border%"<nul echo. )>>"%new%" ) exit /b |
Отправлено: 15:28, 26-08-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать Georgio, спасибо, а нельзя сделать, чтобы он размах выбирал побольше? пока он берет только блоки изпервой десятки, а их там 700, и еще если ставить quantity 1 , он всегда выбирает 1ый блок
![]() |
Отправлено: 16:08, 26-08-2014 | #3 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
@echo off chcp 1251>nul set quantity=5 set "source=example.txt" set "border=//==================" for %%i in ("%source%") do ( set new=%%~dpni_new%%~xi call copy nul "%%new%%">nul ) set temp_file="%temp%\%random%.vbs" for /f %%i in (' more^<"%source%"^|findstr /x "%border:/=\/%"^| find /c /v "" ') do ( for /f %%j in (' set /a %%i-1 ') do ( if %%j lss %quantity% ( call:# %%j %%j ) else ( call:# %%j %quantity% ) ) ) del %temp_file% exit /b :# for /l %%i in (1 1 %1) do ( call set $%%random%%= %%i ) for /f "tokens=2 delims==" %%i in (' set $ ') do ( set /a count+=1 for /f %%j in (' set /a count ') do ( if %%j leq %2 ( echo WScript.StdOut.Write^(Split^(WScript.CreateObject^("Scripting.FileSystemObject"^).OpenTextFile^("%source%"^).ReadAll^(^),"%border%"^&vbCrLf^)^(%%i^)^)>%temp_file% ( cscript //nologo %temp_file%| findstr /vx "%border:/=\/%" set /p="%border%"<nul echo. )>>"%new%" ) else ( exit /b ) ) ) exit /b |
|
Последний раз редактировалось Georgio, 26-08-2014 в 21:06. Причина: уточнение и сокращение кода. Отправлено: 16:16, 26-08-2014 | #4 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать Georgio Супер, спасибо вам за помощь
|
|
Отправлено: 16:28, 26-08-2014 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Alexander_88, Вам с такими запросами давно пора переходить на WSH/PoSH
![]() |
Отправлено: 17:39, 26-08-2014 | #6 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать Если бы я понимал о чем вы говорите
![]() |
Отправлено: 18:18, 26-08-2014 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
|
|
Отправлено: 18:36, 26-08-2014 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Копирование в переменную значения из текстового файла | idlazarev_alex@vk | Скриптовые языки администрирования Windows | 1 | 05-04-2014 22:11 | |
CMD/BAT - [решено] Создание текстового файла с последовательными числами указанного диапазона | 91892823 | Скриптовые языки администрирования Windows | 2 | 03-08-2012 06:43 | |
CMD/BAT - [решено] Выборочное копирование из текстового файла. | odin1 | Скриптовые языки администрирования Windows | 5 | 09-03-2012 22:00 | |
CMD/BAT - Поиск и копирование нескольких строк из текстового файла. | valen | Скриптовые языки администрирования Windows | 0 | 07-11-2011 17:27 | |
VBS/WSH/JS - [решено] Поиск и копирование текста из файла | KaKTuZ49 | Скриптовые языки администрирования Windows | 2 | 03-11-2011 13:38 |
|