CMD/BAT - [решено] Вставить после каждой 10 строки пустую строку

Ответить
 • Просмотры: 1
Аватара пользователя
Mycry

CMD/BAT - [решено] Вставить после каждой 10 строки пустую строку

Сообщение Mycry »

Как в txt файле после каждой 10 строки вставить пустую строку?
Аватара пользователя
Mycry

Re: CMD/BAT - [решено] Вставить после каждой 10 строки пустую строку

Сообщение Mycry »

Если в изначальном текстовом файле нет пустых строк, то, например, так:


читать дальше »




Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile=0001.txt
set sDestFile=0002.txt
if exist "%sSourceFile%" (
	set /a iCount = 1
	>"%sDestFile%" (
		for /f "usebackq delims=" %%i in ("%sSourceFile%") do (
			echo %%i
			if !iCount! lss 10 (
				set /a iCount += 1
			) else (
				echo.
				set /a iCount = 1
			)
		)
	)
) else (
	echo Can't find source file [%sSourceFile%].
)
endlocal
exit /b 0
Аватара пользователя
Mycry

Re: CMD/BAT - [решено] Вставить после каждой 10 строки пустую строку

Сообщение Mycry »

Большое спасибо Iska и Foreigner. Остановился на первом варианте.
Аватара пользователя
Mycry

Re: CMD/BAT - [решено] Вставить после каждой 10 строки пустую строку

Сообщение Mycry »

Цитата Foreigner:



гнутый sed
CMD/BAT - [решено] Вставить после каждой 10 строки пустую строку




Изображение.



PowerShell:



Код:

Код: Выделить всё

$sSourceFile = "E:\Песочница\0304\0001.txt"
$sDestFile   = "E:\Песочница\0304\0002.txt"
if(Test-Path -Path $sSourceFile -PathType Leaf) {
    Get-Content -Path $sSourceFile | ForEach-Object -Process {
        $_
        if($_.ReadCount % 10 -eq 0) {
            ""
        }
    } | Set-Content -Path $sDestFile
} else {
    Write-Host -ForegroundColor Red "Can't find source file [$sSourceFile]."
}
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Вставить после каждой 10 строки пустую строку

Сообщение Foreigner »

Iska, Я тоже подумал про Powershell, но выбрал sed:



Код:

Код: Выделить всё

$a = gc file.txt
$i = 0; $( while ($i -le ($a.count-1)) { $a[$i..($i+9)]; ''; $i+=10 } ) | sc file.txt

Или через for:



Код:

Код: Выделить всё

$a = gc file.txt
$(for ($i = 0; $i -le ($a.count-1); $i+=10) { $a[$i..($i+9)]; '' }) | sc file.txt
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Вставить после каждой 10 строки пустую строку

Сообщение Iska »

Foreigner, в обоих случаях — лишняя пустая строка в конце результирующего файла.
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Вставить после каждой 10 строки пустую строку

Сообщение Foreigner »

Iska, Действительно, можно попробовать так:



Код:

Код: Выделить всё

$a = gc file.txt
for ($i = 1; $i -le ($a.count % 10); $i++) { $a[$i * 10 - 1] += "`n" }
$a | sc file.txt
Ответить

Вернуться в «Скриптовые языки администрирования Windows»