|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Разбиение текстового файла на два. |
|
CMD/BAT - [решено] Разбиение текстового файла на два.
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Здравствуйте, помогите решить задачку.
Нужно разработать и выполнить командный файл, выполняющий разбиение текстового файла, имя которого задано первым параметром КФ, на два файла с именами 1.txt и 2.txt. Количество строк в каждом из этих файлов задано вторым и третьим параметрами КФ. Проверить наличие указанного исходного файла и вывести сообщение о его отсутствии, проверить наличие остальных параметров и их значения на допустимость. Искренне надеюсь на вашу помощь. |
|
Отправлено: 18:45, 14-11-2014 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата zdorovaBandity:
|
|
Отправлено: 18:53, 14-11-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 19:01, 14-11-2014 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Ну, например, так:
Скрытый текст
@echo off setlocal enableextensions enabledelayedexpansion set sSourceFile=%~1 set sCount1=%~2 set sCount2=%~3 set sResultFile1=1.txt set sResultFile2=2.txt if defined sSourceFile ( if defined sCount1 ( if defined sCount2 ( if exist "%sSourceFile%" ( set /a iCount1 = %sCount1% if !iCount1! geq 1 ( set /a iCount2 = %sCount2% if !iCount2! geq 1 ( call :Head "!iCount1!" call :Tail "!iCount1!" "!iCount2!" ) else ( echo Third parameter [%sCount2%] must be numerical and more than 0 call :Usage ) ) else ( echo Second parameter [%sCount1%] must be numerical and more than 0 call :Usage ) ) else ( echo Can't find source file [%sSourceFile%]. exit /b 2 ) ) else ( call :Usage exit /b 1 ) ) else ( call :Usage exit /b 1 ) ) else ( call :Usage exit /b 1 ) exit /b 1 if not defined sSourceFile ( call :Usage exit /b 1 ) if defined sCount1 echo [%iCount1%] if defined sCount2 echo [%iCount2%] endlocal exit /b 0 :Usage echo Error in parameters echo. echo Usage: %~nx0 ^<Source file^> ^<String's count for 1st result file^> ^<String's count for 2nd result file^> exit /b 0 :Head setlocal enableextensions enabledelayedexpansion set /a iHeadCount = %~1 set /a iTotalCount = 0 >"%sResultFile1%" ( for /f "usebackq tokens=1* delims=[]" %%i in ( `type "%sSourceFile%" ^| find.exe /n /v ""` ) do ( set /a iTotalCount += 1 echo.%%j if !iTotalCount! geq %iHeadCount% exit /b ) ) endlocal exit /b 0 :Tail setlocal enableextensions enabledelayedexpansion set /a iSkipCount = %~1 set /a iTailCount = %~2 set /a iTotalCount = 0 >"%sResultFile2%" ( for /f "usebackq tokens=1* delims=[]" %%i in ( `type "%sSourceFile%" ^| more +%iSkipCount% ^|find.exe /n /v ""` ) do ( set /a iTotalCount += 1 echo.%%j if !iTotalCount! geq %iTailCount% exit /b ) ) endlocal exit /b 0 Тут, конечно, не хватает ещё кучи проверок (например, что имя исходного файла не «1.txt» и не «2.txt», и т.п.) и код, мягко говоря, не слишком оптимален, но коли Вам «любое решение, главное что бы хоть что то было» — полагаю, сойдёт. |
Отправлено: 21:49, 14-11-2014 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать [q=Iska]Большое спасибо)
|
|
Отправлено: 23:38, 15-11-2014 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Сборка текстового файла из содержимого другого текстового файла | icomboy | Скриптовые языки администрирования Windows | 0 | 10-09-2013 15:17 | |
CMD/BAT - Разделение текстового файла на части без разделения абзацев | Re:Flex | Скриптовые языки администрирования Windows | 9 | 09-07-2013 04:35 | |
Разбиение txt файла на колонки | ukio | Хочу все знать | 9 | 15-01-2012 18:02 | |
CMD/BAT - [решено] Как скопировать имя файла из текстового файла в код батника и т.д. | Nun-Nun | Скриптовые языки администрирования Windows | 6 | 13-05-2009 13:28 | |
CMD/BAT - [решено] вывод текстового файла на экран cmd | idsp | Скриптовые языки администрирования Windows | 6 | 06-04-2009 07:18 |
|