PDA

Показать полную графическую версию : [решено] работа с текстовыми файлами


YuKar
19-07-2012, 05:49
Здравствуйте.
В папке содержится произвольное число файлов с расширением txt и разными именами. Необходимо в каждом файле оставить только четвертую (или другую ) строчку и в начало этой строчки вписать имя файла. Затем все файлы объединить в один. До этого шага я все делал в bat-файле.
Заранее спасибо.

Iska
19-07-2012, 06:07
Необходимо в каждом файле оставить только четвертую (или другую ) строчку »
1. Какую именно «другую»?
2. Как определять, в каком файле оставлять четвёртую, а в каком — «другую»?

Затем все файлы объединить в один. »
В каком порядке должно производиться объединение файлов?

YuKar
19-07-2012, 13:01
Извините, что неточно сформулировал.
Оставить во всех файлах только четвертую строчку.
Под словом "другую" я имел ввиду, в принципе, делать то же самое с третьей, пятой и т.д..
Если вначале строки будет имя файла, порядок объединения не имеет значения.

Iska
19-07-2012, 15:59
YuKar, например, так:
@echo off
setlocal enableextensions enabledelayedexpansion

set sDestFile=SummaryLog.log

>nul copy nul "%sDestFile%"

for %%i in (*.txt) do (
call :GetStringFromFile "%%~fi" 4
>>"%sDestFile%" echo %%~fi: !StringFromFile!
)

endlocal
exit /b 0

:GetStringFromFile
setlocal enableextensions enabledelayedexpansion

set sFuncName=%~0
set sFile=%~1
set /a iSkipStrings = %~2 - 1

for /f "usebackq skip=%iSkipStrings% delims=" %%i in ("%sFile%") do (
set sValue=%%i
goto :Break
)
:Break

endlocal & set %sFuncName:~4%=%sValue%
exit /b 0

YuKar
19-07-2012, 17:10
Спасибо Iska.
Выходной файл такой, как я хотел.




© OSzone.net 2001-2012