강좌 / 팁

소프트웨어 (추가3) 클립보드로 파일명 복사, VBScript에서, 유틸 소개

2020.04.06 13:32

지후빠 조회:2079 추천:11

 

안녕하세요. 이전에 소개한 ARGS2CLP 가 업데이트 되어서 귀찮게하는 메세지 창이 없어졌습니다.

이메일로 요청드렸더니 흔쾌히 개선해 주셨네요.^^ http://eriedel.info/en/index.html

- 이전 게시물; https://windowsforum.kr/lecture/13097992

- 바이러스토탈에서 2개 걸리네요. 주요한 백신에서는 문제가 없는 것 같습니다만...

2020-04-06_114931.jpg

이전에 레마클로님이 올리신 게시물 기능과 비슷할까요? 제대로 안봐서...

- 레마클로님 게시물; https://windowsforum.kr/lecture/13030984

 

윈7부터인가 clip.exe가 운영체제에 기본으로 들어 있어서 "명령어 | clip" 하면 클립보드로 명령어 결과를 보낼 수 있습니다.

VBScript에서는 보안 문제가 있는지 클립보드 입출력이 자유스럽지 못합니다.

몇달전에 VBScript 사이에서 클립보드로 데이터를 교환하는 방식을 연구하다 몇가지 건지것을 정리해봅니다.

 

 

1. ARGS2CLP 업데이트 소개; 파일 경로를 클립보드로 복사합니다.

- 저는 토탈커맨더(TC)를 사용하여 불편함이 없었지만TC가 없는 곳에서 파일명 복사가 번거로웠습니다.

 

가. ARGS2CLP ; http://eriedel.info/en/files/aclp/args2clp.html 첫번째 것 다운받으시면 됩니다.

- 윈도우 폴더 정도에 넣어두고 c:\Users\(사용자)\SendTo\ 폴더에 단축아이콘 만들고

- 속성에서 "실행: 최소화"로 설정해두시면 창이 번쩍 나타났다 사라지는 현상을 없앨수 있습니다.

- 파일, 폴더들을 선택하여 마우스 우클릭 -> 보내기 -> ARGS2CLP 하시면 전체 경로를 클립보드로 복사합니다.

 

나. ARGS2CLP 와 같은 기능을 내장 clip.exe를 이용하여 vbs를 만들면 다음과 같이 할 수 있을 것입니다.

- clip 대신 ARGS2CLP도 같은 방식으로 스크립트에서 이용할 수 있을 것 같습니다만 번들인 clip.exe가 있으니...

- 아래 스크립트는 메모장으로 .vbs 로 저장하여 a처럼 sendto 폴더에 넣어두고, 우클릭 보내기에서 선택합니다.

 

Set wss = CreateObject("WScript.Shell")

Set oClp = wss.Exec("clip")

Set oClpIn = oClp.stdIn

'mrk = Chr(34) '경로 앞뒤로 쌍따옴표 추가

For Each Arg In WScript.Arguments

strClp = strClp & mrk & Arg & mrk & vbCrLf

Next

oClpIn.WriteLine strClp

oClpIn.Close

Do While oClp.Status = 0

    WScript.Sleep 100

Loop

Set oClpIn = Nothing

Set oClp = Nothing

Set wss = Nothing

 

다. ARGS2CLP을 만든 ERCC에서 VTool 2.9로 업데이트 했군요. VTool을 이용하면은 다음 처럼 될 수 있습니다.

- VTool 2.9 업데이트는 유니코드 지원입니다. 요청드렸더니 multi inputbox 추가 예정이라고 합니다.

- 위와 다르게 하려고 앞 경로는 제외하고 이름만 복사하도록 하였습니다. VTool이 설치되어 있어야 합니다.

 

Set vtClp = CreateObject("VTool.Clipboard")

'mrk = Chr(34) '경로 앞뒤로 쌍따옴표 추가

For Each Arg In WScript.Arguments

parts = Split(Arg,"\")

Arg = parts(UBound(parts))

strClp = strClp & mrk & Arg & mrk & vbCrLf

Next

'strClp = Left(strClp,Len(strClp)-2) '마지막 줄바꿈 없애고 싶으면

vtClp.Text = strClp

Set vtClp = Nothing

 

 

2. 1번 기능을 좀더 확장하여 VTool 이용하여 스크립트 작성

http://eriedel.info/en/files/vtool/vtool.html VTool을 받아서 vtool.exe를 윈도우 폴더에 넣고 vtool.exe /regserver 실행하여 등록

Copy to Clipboard(vt).vbs 를 c:\Users\(사용자)\SendTo\ 폴더에 저장합니다.

- 탐색기에서 폴더 및 파일들을 선택하고 마우스 우클릭 -> 보내기 -> Copy to Clipboard(vt) 선택

2020-04-06_214623.jpg

 

- 복사방식 선택; 이름만 복사, 이름만 복사하는데 클립보드에 덧붙이기, 전체경로 복사, 전체경로 복사하는데 클립보드 내용에 덧붙이기

2020-04-06_214720.jpg

 

- 메모장에 붙여넣기 한 결과

2020-04-06_214754.jpg

 

- 스크립트를 메모장으로 열어보면 다음과 같은 것을 설정할 수 있게 하였습니다. 해당 라인 맨앞 홑따옴표만 지우고 저장하시면 됩니다.

--- 경로 앞,뒤에 쌍따옴표를 추가하기

--- 폴더일때 뒤에 \을 붙이기

--- 마지막 줄바꿈을 없애기

--- 복사후 클립보드 내용을 보여주기

 

 

3. VTool 이용하는 방법 연습중에 있습니다. 2번 보다는 check box를 이용하는 것이 좋을 것 같아서 아래처럼 수정해 보았습니다.

- 2번과 사용방법은 같고 아래처럼 창이 하나 나타나는데 원하는 옵션 선택후 실행하면 됩니다. UI font size가 작네요ㅠㅠ.

Copy to Clipboard(vt-check).vbs

2020-04-07_140737.jpg

- 개발자와 e-mail을 주고 받던중 폰트 대체에 관한 레지스트리를 알게 되어 "MS Shell Dlg 2" 값 tahoma를 malgun으로 바꿨더니 아래처럼 훌륭하게 화면이 출력되네요. 다른 문제가 없다면 이렇게 해결하는 것도 한 방법이겠습니다. Font MS Shell Dlg 2 setting.reg

2020-04-11_073327.jpg

 

 

4. VBScript에서 클립보드 사용방법들과 장단점 간략히 경험치만 정리

- VBScript 내에서 클립보드 내용을 불러오는 것과 클립보드로 내보내는 것으로 나눠볼수 있는데 읽어오는 것은 비교적 수월합니다.

 

가. 읽어오기

- 방법1; 가장 무난한 방법인것 같습니다. (내장기능)

cliptext = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")

- 방법2; 콘솔창이 빠르게 나타났다 사라집니다. (내장기능, 콘솔에서 사용가능)

Set wss= CreateObject("WScript.Shell")

Set oExec = wss.Exec("powershell.exe Get-Clipboard")

cliptext = oExec.StdOut.ReadAll

- 방법3; 콘솔용 유틸 사용 paste.exe https://www.c3scripts.com/tutorials/msdos/paste.html (외부 앱, 콘솔 사용가능, 방법2보다 빠른듯)
-----> dos2clip.exe도 가능 http://www.thornsoft.com/dist/techsupport/dos2clip.zip
Set wss = CreateObject("WScript.Shell")
Set oPaste = wss.Exec("paste.exe")
cliptext  = oPaste.StdOut.ReadAll

- 방법4; 위 (1-다) 에서 처럼 VTool을 사용, 쉽지만 외부 툴이 필요하다는 단점, 클립보드 입력도 같이 이용하려면 이게 좋은 방법인듯.

Set vtClp = CreateObject("VTool.Clipboard")

cliptext  = vtClp.Text

- 방법5; 방법4와 유사하고 VbsEdit를 설치하였으면 toolkit이 기본으로 설치되어 있습니다.

-----> https://windowsforum.kr/lecture/13097992 게시 글중 중간쯤에서 관련 dll 설치 정보가 있습니다.

Set toolkit = CreateObject("VbsEdit.Toolkit")

cliptext  = toolkit.GetClipboardText()

 

나. 클립보드로 보내기

- 방법1; IE 엑세스 허용창이 떠서 허용해줘야 가능한 방법이라 별로입니다.

Set oHtml = CreateObject("InternetExplorer.Application")

oHtml.Navigate ("about:blank")

cliptext = "클립보드로 텍스트를 보냅니다."

oHtml.Document.ParentWindow.ClipboardData.SetData "Text", cliptext

oHtml.Quit

- 밥법2; 이것도 번쩍 창이 빠르게 떳다 사라져서 별로인듯, 같은 방법으로 dos2clip.exe 와 args2clp 도 이용될 수 있겠습니다. 

Set wss = CreateObject("WScript.Shell")

Set oClp = wss.Exec("clip")

Set oClpIn = oClp.stdIn

cliptext = "클립보드로 텍스트를 보냅니다."

oClpIn.WriteLine cliptext

oClpIn.Close

- 방법3; 다에서 소개할 함수와 클래스에 사용된 방법인데 특정 문자(\)를 처리 못하는 것 같습니다. 자바스크립트를 잘알면 보완할 수 있을듯

cliptext = "클립보드로 텍스트를 보냅니다."

CreateObject( "WScript.Shell" ).Run "mshta.exe javascript:eval(""document.parentWindow.clipboardData.setData('text','" & _

Replace(Replace(Replace(cliptext, "'", "\\u0027"), """", "\\u0022"), Chr(13), "\\r\\n") & "');window.close()"")", 0, True

- 방법4; VTool 가 용이하지만 역시 외부툴이라서 설치가 필요합니다.

Set vtClp = CreateObject("VTool.Clipboard")

cliptext = "클립보드로 텍스트를 보냅니다."

vtClp.Text = cliptext

- 방법5; VbsEdit toolkit 이용하면

Set toolkit = CreateObject("VbsEdit.Toolkit")

cliptext = "클립보드로 텍스트를 보냅니다."

toolkit.PutClipboardText cliptext

 

다. 함수나 클래스 형태로 묶어두어 사용하기 쉬우나 IE 엑세스 허용을 요구하거나, 특정 문자를 처리 못하는 문제가 있습니다.

- 클래스 형태로 이게 좋은데 IE 엑세스 허용을 요구를 함. 아래 스샷 참고

http://richschreiber.weebly.com/clipboardvbs.html

- 클래스 형태로 특정 문자를 처리 못합니다. 예) 줄바꾸기, \ 또 뭐가 더 있을 수 있습니다.

https://gist.github.com/simply-coded/

- 함수형태; 위와 같은 것인데 함수 형태로 사용합니다. 줄바꿈은 해결했으나 \ 문자는 해결 못함 (자바스크립트 고수께서 연구좀...)

https://stackoverflow.com/questions/19696308/how-can-i-use-clipboard-in-vbscript

SetData 허용메세지.jpg

(이 창은 피할 수 있는 방법이 있을까요?) -> IE-인터넷-클립보드-허용.reg 을 적용하면 안뜨고 잘 되네요.^^ 아래 댓글 참조하세요~.

 

라. 가,나에서 사용한 방법인 콘솔용 유틸, 다른 예인데 즐겨찾기 정리하다 나와서 추가 합니다.

- WinClip https://www2.dmst.aueb.gr/dds/sw/outwit/ , winreg.exe 도 유용할듯...(관리자 권한을 묻지 않는 다면)

- winclip -p 는 가져오기

Set wss = CreateObject("WScript.Shell")

Set oClpO = wss.Exec("winclip.exe -p")

cliptext  = oClpO.StdOut.ReadAll

 

- winclip -c 는 클립보드로 보내기

Set wss = CreateObject("WScript.Shell")

Set oClpI = wss.Exec("winclip.exe -c")

Set oClpIn = oClpI.stdIn

cliptext = "클립보드로 텍스트를 보냅니다."

oClpIn.WriteLine cliptext

oClpIn.Close

 

 

(아래는 시간 나는데로 수정할 예정입니다.)

5. 제가 즐겨 사용한(했던) 윈도우 클립보드 유틸; CLCL, ClipCache

- 최신 버전으로 한글화시켜서 올릴려고 했는데, 완료되는데로 수정하겠습니다.

 

가. CLCL ; https://www.nakka.com/soft/clcl/index_eng.html 무료버전

- 최신버전 2.1.1 인데 몇년전에 2.0.3을 한글화 했었습니다. https://windowsforum.kr/data/7645112

- 자료실에 2.1.1 한글 버전 올리신 분이 있네요. https://windowsforum.kr/data/7645112 댓글에 있습니다.

- 조만간 저도 플러그인 등 정리하고 한글 입혀서 올릴려고 합니다.

 

나. ClipCache ; 1달 쉐어웨어 https://www.xrayz.co.uk/clipcache/ 3.6.3버전

- 십몇년 전에 2.9를 한글화 했었습니다. ClipCache Plus 2.9.349 한글.zip

- 조만간 최근 버전을 한글화 해보려 하는데 지금은 CLCL을 쓰고 있어서 테스트후 괜찮으면 한글화 해보겠습니다.

 

번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
4198 윈 도 우| 윈도우10 기본 브라우저 초기화 및 재설정 [4] 무월 1818 5 07-07
4197 소프트웨어| 노턴 시큐리티 Ver.22.20.5.40 한글판 탐지 제외 설정 방법 [2] 타천사둘리 1385 1 07-05
4196 윈 도 우| [실사] 윈도우11(22H2) 업그레이드 우회 설치 [12] 무월 4601 17 07-02
4195 윈 도 우| [실사] 윈도우10/11 만능WIM 자동 설치(WinToHDD 5 8) [15] 무월 3454 16 07-02
4194 소프트웨어| Symantec Endpoint Protection(SEP) 삭제방법(삭제시 비밀... [3] 타천사둘리 2061 6 06-28
4193 기 타| 지원이 끝난 PC 드라이버 해결하기 [4] Win10pro 3181 1 06-27
4192 윈 도 우| [실사] 스틱PC Windows 10 32bit UEFI 설치 [3] 무월 1873 6 06-26
4191 윈 도 우| [실시간 보호 기능 켬/끔] 좀 더 편하게 실행 [24] 지후빠 3875 48 06-26
4190 기 타| macOS 13 Ventura 설치(Bootable ISO/USB 생성) [2] 무월 2393 9 06-19
4189 소프트웨어| NIUBI Partition Editor에 배드(불량) 섹터 검사 기능이 있... [2] 그루터기 1132 7 06-18
4188 윈 도 우| 업무화면과 주식화면을 분리시키기 [1] 좋게멋지게 2462 8 06-17
4187 윈 도 우| [실사] 윈도우7/8.1/10 업그레이드 설치 - 윈도우10(21H2) [5] 무월 2991 15 06-12
4186 윈 도 우| 윈도우11 22621.4 에서 IE 11 사용방법 [11] 타천사둘리 2781 10 06-11
4185 기 타| iptime 공유기. 국가별 접속제한 사용 시 iptv 안 나올 때 ... [4] heykevin 2501 7 06-08
4184 소프트웨어| 엑셀로 KBS1 KBS2 MBC SBS 등 편성표 가져오기 [14] 지후빠 2692 14 06-06
4183 하드웨어| [팁] 아이패드에서 마우스 휠 스크롤 방향 바꾸기 [1] asklee 853 1 06-01
4182 소프트웨어| 비즈니스용 MS Office365 신규 UI적용하기 [2] 마집사 2646 6 05-27
4181 윈 도 우| 소소한 배치파일 팁 2가지(start 명령, %time%) [7] 메리아 2152 10 05-26
4180 윈 도 우| 윈도우 10 VHD 업그레이드 설치 [7] 무월 2294 7 05-22
4179 윈 도 우| [팁] 윈도우10/11 설치 중 OneDrive 설치 방지! [19] 무월 4484 16 05-17
XE1.11.6 Layout1.4.8