윈 도 우 vbs_Merge Lines(Drag-n-drop)
2020.03.03 21:24
vbs_Merge Lines(Drag-n-drop)
' 여러 줄 -> 한 줄 스크립트로
지후빠님의 스크립트가 완벽하여 제 파일에 대신 합니다
파일 https://windowsforum.kr/?module=file&act=procFileDownload&file_srl=12979831&sid=387a7c905a07dbdcbb6ee561f8590df0&module_srl=12255
If WScript.Arguments.Count < 1 Then WScript.Quit
Set fso = Wscript.Createobject("Scripting.FileSystemObject")
sPath = WScript.Arguments.Item(0)
If Not fso.FileExists(sPath) Then WScript.Quit
'----------------------------------------------------------------------
fso.CopyFile sPath, sPath & "(1)", true
Set oFile = fso.OpenTextFile(sPath, 1) : sData = oFile.ReadAll : oFile.Close
sData = reReplace(sData, "\'.*|(^|\n)\s*\r", "") '주석문, (처음, 중간) 빈줄 제거
sData = Replace(sData, vbTab, "") '탭문자 제거
sData = Replace(sData, vbCr, " : ") 'return -> " : " 바꾸기
sData = Replace(sData, vbLF, " : ")
sData = reReplace(sData, "(\s+:\s)+", " : ") '" : " 반복 제거
sData = reReplace(sData, "\s:\s+", " : ")
sData = reReplace(sData, "^\s+:\s*|\s+:\s*$", "") '처음과 끝 " : " 제거
Set oFile = fso.CreateTextFile(sPath, True) : oFile.Write sData : oFile.Close
Set oFile = Nothing
Set fso = Nothing
'----------------------------------------------------------------------
Function reReplace(intxt, pttrn, subst)
Dim objRegExp : Set objRegExp = New RegExp
With objRegExp
.Pattern = pttrn
.Global = True
reReplace = .Replace(intxt, subst)
End With
Set objRegExp = Nothing
End Function
댓글 [12]
-
레마클로 2020.03.03 21:54 -
cungice 2020.03.03 22:14
수고 많으셨습니다. 감사합니다.
-
지후빠 2020.03.03 23:54
재미있는 것을 많이 하시네요.^^ 주석문이 있으면 문제가 될 것 같습니다. 주석문을 지우려면 초반부
(----- "return" -> " : " -------------------------------------- )의 앞줄 쯤에 다음 코드를 추가해보십시오.^^;
Dim objRegExp : Set objRegExp = New RegExp
With objRegExp
.Pattern = "\'.*"
.Global = True
sData = .Replace(sData, "")
End With
Set objRegExp = Nothing
-
레마클로 2020.03.04 00:10 고맙습니다
더 수정할 부분 있으면 고쳐주세요.^^
특히 빈 줄이 2개 이상일때..
요즘은 코로나 땜에 시간이 나네요.
바쁘면 눈팅 할 시간도 없어요.
<테스트 결과>
1 :
2 : 3 : 4 : 5
'----- 주석문 안 들어가게 ---------------------------------
'----- "return" -> " : " --------------------------------------
sData = Replace(sData, vbCrLF, " : ")
'----- erase "5 empty line" -----------------------------
sData = Replace(sData, ": :", ":")
sData = Replace(sData, ": :", ":")
sData = Replace(sData, ": :", ":")
주석문 과 빈줄 스크립트(무식하게 위 처럼 하니 5개까지는 가능) --> 수정 부탁드립니다.^^
-
지후빠 2020.03.04 00:41
빈줄 제거는 "\n\s*\r" 정도로 하면 되지 않을까요.
주석문 정리하면 빈줄이 생기니 그다음으로 빈줄 제거를 하면 될듯 싶습니다.^^
-
레마클로 2020.03.04 01:06 한 번만 더 봐주세요.^^
' 여러 줄 -> 한 줄 스크립트로
set fso = wscript.createobject("scripting.filesystemobject")
if wscript.arguments.length<>0 then
spath=wscript.arguments(0)
if fso.fileexists(spath) then
fso.copyfile spath, spath & ".original", true
end if
end if
set oFile = fso.OpenTextFile(spath, 1)
sData = oFile.ReadAll
oFile.Close
Dim objRegExp : Set objRegExp = New RegExp
With objRegExp
.Pattern = "\'.*" '----- 주석문 안 들어가게 -------------
.Global = True
sData = .Replace(sData, "")
.Pattern = "\n\s*\r" '----- erase "empty line" --------
.Global = True
sData = .Replace(sData, "")
End With
Set objRegExp = Nothing
'----- "return" -> " : " --------------------------------------
sData = Replace(sData, vbCrLF, " : ")
'----- erase last " : " at the end ---------------------------
if (Right(sData,3) =" : ") then
sData = Trim(Left(sData,Len(sData)-3))
end if
if (Left(sData,3) =" : ") then
sData = Trim(Right(sData,Len(sData)-3))
end if
'----- save as file -----------------------------------------
set oFile = fso.CreateTextFile(Replace(spath, Right(spath,4),"" & Right(spath,4)))
oFile.Write sData
oFile.Close
원본
1
'---
2
3
4
'-------------
5
결과
1 : 2 : 3 : 4 :
5
-
지후빠 2020.03.04 08:13
일단
sData = Replace(sData, vbCrLF, " : ") 다음줄에
sData = Replace(sData, vbLF, " : ") 추가해주시면 될듯합니다.
자세한 것은 점심시간이나 퇴근후 살펴보겠습니다. ^^;
-
레마클로 2020.03.04 08:57 "주석문 제거"빼고 하면 모든 빈줄은 몇개가 들어가든 성공
주석문 제거 + sData = Replace(sData, vbLF, " : ") 추가 = 실패
완성되게 도와주세요.^^
-
또비 2020.03.04 14:34 감사합니다.
-
지후빠 2020.03.04 19:00
많은 경우의 수를 생각해야 하는데 기본적인 패턴만 설정하여서 제 스타일로 만들었습니다. ^^; MergeToALine.vbs
잠시 쉬고 다시 일 좀 해야 해서... 필요한 것 있으시면 댓글 주십시오.~
-
레마클로 2020.03.04 19:29 완벽하네요.
감사합니다.^^
-
지후빠 2020.03.04 23:18
덕분에 정규식 다시 한번 보았는데 역시나 한계가 있는 것 같습니다. 공부가 되었습니다. ^^
필요할 때 구글신에게 물어서 조합해서 쓰곤하는데 자주 안써서... 또 곧 잊겠지요. >.<
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
4400 | 윈 도 우| [실사] VHD 교차부팅 수동&자동 등록 [18] | 무월 | 1975 | 32 | 10-07 |
4399 | 소프트웨어| EDGE 브라우저 창 크기 "최대화" 고정 하기 [1] | 미스라 | 1482 | 6 | 10-03 |
4398 | 윈 도 우| [갱신] 윈도우 11 로컬 계정 암호 변경 [14] | 무월 | 2244 | 18 | 09-27 |
4397 | 소프트웨어| 테라카피(Teracopy) 3.12 설치팁 [7] | 메리아 | 2318 | 17 | 09-27 |
4396 | 소프트웨어| PDF-XChange Editor 기본글꼴 바꾸기 [1] | 코리아선비 | 890 | 3 | 09-25 |
4395 | 윈 도 우| Windows 11에서 광고 팝업을 끄는 방법 [5] | VᴇɴᴜꜱGɪ | 3100 | 8 | 09-22 |
4394 | 소프트웨어| [포토샵] 인물 누끼따기 외곽선 정리 [12] | 무월 | 2555 | 37 | 09-20 |
4393 | 윈 도 우| 윈도우 11 로컬 계정 암호 재설정 [15] | 무월 | 1778 | 29 | 09-18 |
4392 | 윈 도 우| 윈도우11 에서 창 깜박거림이나 입력글자가 사라지는 경우 [5] | Named | 1558 | 2 | 09-14 |
4391 | 소프트웨어| PE 동영상 썸네일 표시 [3] | 히이이잌 | 674 | 16 | 09-14 |
4390 | 모 바 일| [팁] 카톡 '전화번호로 친구 추가 허용' 기능 추가 [2] | asklee | 1597 | 4 | 09-13 |
4389 | 윈 도 우| Microsoft는 최근 Windows 11 WinRE 업데이트가 실패한 이... [2] | VᴇɴᴜꜱGɪ | 1497 | 4 | 09-10 |
4388 | 윈 도 우| 바로가기 아이콘을 만들어 원 클릭으로 디펜더 온 오프 메... [8] | heykevin | 1298 | 20 | 09-09 |
4387 | 소프트웨어| 64bit 프로그램 한글화 강좌 [4] | 夕影 | 1757 | 7 | 09-09 |
4386 | 소프트웨어| [엑셀] 선택된 셀, 행, 열 강조 하기! [13] | 무월 | 2561 | 28 | 08-31 |
4385 | 소프트웨어| Microsoft Edge를 사용하여 YouTube 스크린샷을 찍는 방법 [3] | Security_Z | 1347 | 5 | 08-30 |
4384 | 윈 도 우| [실사] 윈도우 11 VHD 교차부팅(자동) 설정 - VHDMan [16] | 무월 | 1952 | 35 | 08-26 |
4383 | 소프트웨어| Microsoft Edge IE모드 구성하기 [10] | 무월 | 1837 | 22 | 08-26 |
4382 | 윈 도 우| [3탄] PE빌드를 위한 누적 업데이트 통합 (Winre.wim + ins... [14] | 무월 | 1275 | 26 | 08-25 |
4381 | 윈 도 우| 텍스트 파일 하위 폴더 파일 포함 병합하기! [11] | 무월 | 820 | 27 | 08-23 |
구글링 -> 수정 .....
조건 = 순수 스크립트 + 빈 줄은 한 줄만 있어야 함