|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Извлечь определенные строки по счету из одного тхт файла в другой |
|
|
Любой язык - [решено] Извлечь определенные строки по счету из одного тхт файла в другой
|
Ветеран Сообщения: 541 |
Профиль | Отправить PM | Цитировать Здравствуйте, подскажите, пожалуйста как можно из одного тхт файла скопировать 1, 5, 9, 13... и т.д. строчки (+4), из одного тхт файла в другой? Притом по 2 копии каждой строчки.
пример тхт файла: выводимый тхт файл после применения скрипта: |
|
Отправлено: 21:56, 10-06-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Кодировка «одного тхт файла» какая?
Попробуйте так: Скрытый текст
@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 iCycles = !iLinesCount! / 3
set /a iMod = !iLinesCount! %% 3
if !iMod! neq 0 set /a iCycles += 1
<"%sSourceFile%" >"%sDestFile%" (
for /l %%i in (1, 1, !iCycles!) do (
set sLine1=
set sLine2=
set sLine3=
>nul set /p sLine1=
>nul set /p sLine2=
>nul set /p sLine3=
echo.!sLine1!
echo.!sLine1!
)
)
) else (
echo Can't find source file [%sSourceFile%].
exit /b 2
)
) else (
echo Usage: %~nx0 ^<Source file^>
exit /b 1
)
endlocal
exit /b 0
Исходный файл указывается параметром пакетного файла (также можно перетащить исходный файл на пакетный файл в Проводнике). Имя результирующего файла тупо указано в коде («Result.txt»). |
Отправлено: 23:05, 10-06-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 541
|
Профиль | Отправить PM | Цитировать спасибо, работает. Я не много исправил, добавил еще
set sLine4= и >nul set /p sLine4= т.к. нужно извлекать 1, 5, 9, 13 ......... т.е. между извлеченными строками всегда 3 других строчки. Только вот почему - то в результирующий файл, в конце добавляются лишние пустые строки, может я не до конца исправил (или вообще не правильно)? |
Отправлено: 23:32, 10-06-2015 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
Скрытый текст
@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 iCycles = !iLinesCount! / 4 set /a iMod = !iLinesCount! %% 4 if !iMod! neq 0 set /a iCycles += 1 <"%sSourceFile%" >"%sDestFile%" ( for /l %%i in (1, 1, !iCycles!) do ( set sLine1= set sLine2= set sLine3= set sLine4= >nul set /p sLine1= >nul set /p sLine2= >nul set /p sLine3= >nul set /p sLine4= echo.!sLine1! echo.!sLine1! ) ) ) else ( echo Can't find source file [%sSourceFile%]. exit /b 2 ) ) else ( echo Usage: %~nx0 ^<Source file^> exit /b 1 ) endlocal exit /b 0 |
|
Отправлено: 00:48, 11-06-2015 | #4 |
Ветеран Сообщения: 541
|
Профиль | Отправить PM | Цитировать работает, спасибо
|
|
Отправлено: 00:54, 11-06-2015 | #5 |
Забанен Сообщения: 793
|
|
Отправлено: 20:12, 11-06-2015 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата greg zakharov:
Update: На PowerShell как-то так: $sContent = Get-Content "C:\Мои проекты\10\0001.txt"
for($i = 0; $i -le $sContent.count; $i += 4) {
$sContent[$i], $sContent[$i]
}
P.S. На PowerShell нельзя, как в C, использовать несколько операторов в строке инициализации цикла: ? |
|
Последний раз редактировалось Iska, 11-06-2015 в 20:54. Отправлено: 20:40, 11-06-2015 | #7 |
Забанен Сообщения: 793
|
Цитата Iska:
Цитата Iska:
|
||
Отправлено: 21:07, 11-06-2015 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Пример он и есть пример — не более, а поскольку выше было явно сказано:
Цитата Alexander_88:
Цитата greg zakharov:
|
||
Отправлено: 21:56, 11-06-2015 | #9 |
Забанен Сообщения: 793
|
Цитата Iska:
Цитата Iska:
|
||
Отправлено: 06:55, 12-06-2015 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] извлечение ссылок из одного тхт файла в другой | Alexander_88 | Скриптовые языки администрирования Windows | 4 | 05-04-2015 15:39 | |
C/C++ - С :запись из одного файла в другой только часть строки | alfaw | Программирование и базы данных | 1 | 07-07-2013 23:40 | |
CMD/BAT - Перенос строк из одного файла в другой | jackscorpse | Скриптовые языки администрирования Windows | 0 | 25-08-2012 00:31 | |
Любой язык - [решено] из одного тхт файла добавить содержимое во все тхт файлы папки | gangsterovich | Скриптовые языки администрирования Windows | 3 | 06-05-2011 04:29 | |
Как экспортировать поле из одного dbf файла в другой? | Raman | Программное обеспечение Windows | 1 | 04-04-2008 14:30 |
|