강좌 / 팁

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

2020.04.06 13:32

지후빠 조회:2150 추천: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 - - -
3643 소프트웨어| 아이피 저장 복원 고정아이피 넣기 [14] 지룡자 1979 11 04-19
3642 윈 도 우| [수정] RegOwnership 이용 : 레지소유권 얻기 <--> ... [9] 레마클로 1094 9 04-18
3641 윈 도 우| 윈10 에 기본장착된 "사용자휴대폰" 앱으로 PC ... [28] 와니 6414 4 04-12
3640 윈 도 우| 확장자,숨김(OnOff - NoFile 레지) // 바탕아이콘 정렬문제... [6] 레마클로 1864 16 04-11
3639 소프트웨어| 파일 이름으로 폴더 만들고 이동하기 [14] 지후빠 1956 15 04-10
3638 소프트웨어| SD카드를 공장초기화로 포맷을 합니다. [6] 하늘은높고 3727 10 04-10
» 소프트웨어| (추가3) 클립보드로 파일명 복사, VBScript에서, 유틸 소개 [18] 지후빠 2150 11 04-06
3636 기 타| 원격 PC 종료 [7] gooddew 3859 9 04-06
3635 윈 도 우| Win PE에서 윈도우 UEFI설치를 합니다. [18] 하늘은높고 5217 30 04-05
3634 윈 도 우| file_folder2Hide&show, vbe <--> vbs [2] 레마클로 684 8 04-03
3633 윈 도 우| Move over there 등록_제거 final 2020-04-15 [51] 레마클로 2741 22 03-29
3632 하드웨어| 메인보드 모델명 확인하기 [5] gooddew 3697 22 03-28
3631 소프트웨어| 진행바와 함께 URL 다운로드 VBS + AHK [15] 지후빠 1399 10 03-28
3630 윈 도 우| Windows 10 버전별 CPU 지원 리스트.. [4] 은주얌 3155 4 03-27
3629 윈 도 우| Gpedit.msc는 무엇 이죠? (구글링) [4] 레마클로 1364 1 03-27
3628 기 타| 특정 프로그램이 32비트? 64 비트? 여부 확인하기 [5] gooddew 1480 8 03-27
3627 윈 도 우| 레노버 노트북 충천USB 사용시 마우스 버벅거림 [1] 번개 757 1 03-26
3626 윈 도 우| Move over there 우메뉴등록_제거 + 그룹정책 백복 [10] 레마클로 1231 11 03-25
3625 윈 도 우| 탐색기 화면에 글자가 부실해 보일 때 설정 방법 [1] 하늘은높고 1454 3 03-25
3624 소프트웨어| VBScript 기능 확장하기 개요 - API, COM server [8] 지후빠 1146 9 03-24
XE1.11.6 Layout1.4.8