강좌 / 팁

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

2020.04.06 13:32

지후빠 조회:1699 추천: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 - - -
3734 소프트웨어| Ventoy 4GB이상의 이미지 혹시나 해서 해보니 재미난 상황... [9] 비비씨씨 3232 7 06-04
3733 하드웨어| [Tip] EU 플러그 -> KS 플러그 변환 [7] asklee 2343 4 06-02
3732 소프트웨어| 이런 식의 포터블 런처는 어떨까요?(프로그램 있슴.) [7] 타락천사둘 1888 15 06-02
3731 윈 도 우| VHD 동적확장-고정간 변환 및 크기 변경 [1] 신세계 1048 5 06-01
3730 소프트웨어| [내용 업데이트] 무료로 내 PC(또는 폰,TV BOX)를 영화 감... [16] windowsand 3717 11 05-31
3729 윈 도 우| VHD 부트에서 부팅된 VHD 파일경로 추출과 활용 스크립트 [2] Neutrino 875 7 05-31
3728 서버 / IT| 손쉽게 멀티부팅용 USB 만들기. (내용추가) [50] 디폴트 6454 60 05-31
3727 윈 도 우| LG 복원 솔류션 이식하기 (UEFI) [14] gooddew 3484 15 05-30
3726 기 타| 노래 무료로 평생 듣는 방법 [27] windowsand 5678 4 05-27
3725 소프트웨어| vmware workstation 에서 그나마 게임을 원할하게 굴리기 ... [4] 모노스타일 1574 4 05-26
3724 윈 도 우| LG Recovery(UEFI)에 대해서.... [9] 밤이슬216 3419 13 05-25
3723 소프트웨어| 한컴오피스 2020 교육기관용 워터마크 지우기 [16] 삿갓구름 7523 15 05-23
3722 윈 도 우| 일반 PC 에 삼성 복원 솔루션 이식하기 (UEFI) [52] gooddew 8117 41 05-21
3721 윈 도 우| [팁] 윈도우 탐색기 자동 새로고침에 대한 간단한 팁. [4] 메리아 2710 2 05-19
3720 윈 도 우| SRS7에 대해서..좀 더 자세하게..일반 PC용으로.... [14] 밤이슬216 2676 5 05-18
3719 윈 도 우| SRS8 --- install.wim [5] 밤이슬216 2818 10 05-18
3718 소프트웨어| MS OFFICE Retail 을 Volume 라이선스로 변경하기 [12] gooddew 4931 28 05-15
3717 서버 / IT| Debian GNU/Linux 10.x.x 설치 가이드 [2] VenusGirl 1528 10 05-12
3716 소프트웨어| Total Commander 사용자 정의 명령어 [7] 지후빠 1728 7 05-08
3715 소프트웨어| Total Commander & Bat builder and launcher [6] 지후빠 1715 11 05-06
XE1.11.6 Layout1.4.8