기 타 여러 텍스트 파일을 하나의 줄로 저장 하고 싶어요
2022.06.04 17:52
폴더내에 여러 텍스트파일을 합치고 싶은데요
텍스트 파일 하나당 한줄로 나오게 할 수 있을까요?
한줄이 텍스트 파일 하나인셈인거죠
그리고 역으로 한줄로 저장된 텍스트 파일을
개별로 따로 저장이 가능한지요?
댓글 [13]
-
VᴇɴᴜꜱGɪʀʟ 2022.06.04 22:46
-
지후빠 2022.06.04 23:50
배치파일로 골격만 잡았습니다. 원본 소스의 인코딩 등을 고려하셔서 필요한 방향으로 수정해보시면 좋겠습니다. ^^;
textjoin.cmd 같은 폴더에 있는 모든 .txt 파일을 파일 하나당 한줄로 정리합니다. 편의상 줄사이 스페이스를 하나 추가하였습니다.
@echo off & cd /d "%~dp0" & setlocal enabledelayedexpansion
for %%# in (*.txt) do (set "line="
for /f "delims=" %%a in (%%~s#) do set "line=!line!%%a "
echo !line! >> textjoin.out
)
endlocal & pause
textsplit.cmd textjoin.out 텍스트 파일을 한줄씩 각 파일로 분리하여 out숫자.txt 로 저장합니다.
@echo off & cd /d "%~dp0" & setlocal enabledelayedexpansion
set "file=textjoin.out"
for /f "delims=" %%a in (%file%) do set /a i+=1 & echo %%a > out!i!.txt
endlocal & pause
-
고북 2022.06.05 07:53
감사합니다.
-
메리아 2022.06.05 11:01 -
-
고북 2022.06.05 12:47
파일 합칠때 내용을 발췌해서 파일명을 정하는것도 가능하신가요?
날짜 이름vs이름
이렇게요
-
고북 2022.06.05 11:43
감사합니다
-
고북 2022.06.05 11:49
지후빠님
파일 첨부했습니다.
-
지후빠 2022.06.05 12:19
txt 파일 형태를 보니 줄 구분자를 넣을 필요 없겠다 싶어서 스페이스 추가 부분 없앴습니다.
한가지 더 추가했습니다. 용도에 따라 수정이 편하신 것을 사용할 수 있겠습니다.^^
@echo on & cd /d "%~dp0" & setlocal enabledelayedexpansion
for %%# in (*.txt) do (set "line="
for /f "eol= delims=" %%a in (%%~s#) do set "line=!line!%%a"
echo !line! >> textjoin.out
)
endlocal & pause
@echo off & cd /d "%~dp0" & setlocal enabledelayedexpansion
for %%# in (*.txt) do (
for /f "eol= delims=" %%h in (%%~s#) do (>>textjoin.out <nul set /p unused=%%h)
echo.>>textjoin.out
)
endlocal & pause
-
고북 2022.06.05 12:24
감사합니다
잘 작동합니다.
-
지후빠 2022.06.05 14:11
원본 파일명 정보도 포함하도록 하였습니다.
@cd /d "%~dp0" & setlocal enabledelayedexpansion
for %%# in (*.txt) do (set "line=%%#|"
for /f "eol= delims=" %%a in (%%~s#) do set "line=!line!%%a"
echo !line! >> textjoin.out
)
endlocal & pause
원본 파일명으로 분리토록하였습니다. 혹시 줄바꿈도 원본처럼 복원해야하나요?
@cd /d "%~dp0" & setlocal enabledelayedexpansion
@set "file=textjoin.out"
for /f "tokens=1* delims=|" %%a in (%file%) do echo %%b >> %%a
endlocal & pause
-
고북 2022.06.05 16:56
그래주시면 감사합니다.
대단하세요~ ^^
-
지후빠 2022.06.05 18:37
합칠때는 "|"로 연결하고 분리할때 "|"를 기준으로 줄을 나눕니다.
파일 이름도 저장하고 복원합니다.
원본 텍스트 파일 줄이 26줄 이상이면 마지막 줄은 분리되지 않고 한줄로 나옵니다. 샘플파일에서는 21줄 이하라 문제 없을듯...
@cd /d "%~dp0" & setlocal enabledelayedexpansion
for %%# in (*.txt) do (set "line=%%#"
for /f "eol= delims=" %%a in (%%~s#) do set "line=!line!|%%a"
echo !line!>> textjoin.out
)
endlocal & pause
@cd /d "%~dp0" & setlocal enabledelayedexpansion
for /f "tokens=1-25* delims=|" %%a in (textjoin.out) do (
call :APPEND "%%a" "%%b" "%%c" "%%d" "%%e" "%%f" "%%g" "%%h" "%%i" "%%j" "%%k" "%%l" "%%m" "%%n" "%%o" "%%p" "%%q" "%%r" "%%s" "%%t" "%%u" "%%v" "%%w" "%%x" "%%y" "%%z")
endlocal & pause & exit /b
:APPEND
set out=%1
:loop
shift
if "%~1"=="" (exit /b) else echo %~1>> %out%
goto loop
-
고북 2022.06.05 19:19
완벽히 구현되었습니다.
꾸벅~~
줄 끌의 줄 바꿈을 한 엔터의 처리에 따라 다르겠죠.
병합하기전에 미리 줄 바꿈을 한 엔터를 없애거나 병합하고 나서 줄 바꿈을 한 엔터를 없애야 겠죠.
대부분의 텍스트 에티터에는 줄바꿈 엔터를 없애는 기능은 문단 부호를 보이게 하고 없애는 기능은 있습니다.
그리고 역으로 한줄로 저장된 텍스트 파일을 개별로 따로 저장은 일일이 수작업을 해야겠죠. 새로운 파일을 만들어야 하니까요!