강좌 / 팁

소프트웨어 (추가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 - - -
4360 소프트웨어| Total Commander 주요 단축키 설명 [3] VᴇɴᴜꜱGɪ 1004 11 07-23
4359 윈 도 우| 없이는 살 수 없는 Windows 바로 가기 키 11개 [5] VᴇɴᴜꜱGɪ 2963 31 07-18
4358 윈 도 우| Windows 11에서 모니터에 적합한 색 프로필을 얻는 방법 [3] VᴇɴᴜꜱGɪ 1496 2 07-17
4357 소프트웨어| 탐색기 컨텍스트 메뉴에 토탈커맨더에서 열기 추가 [15] 지후빠 970 23 07-16
4356 윈 도 우| RunOnce 레지스트리 키(간단 메뉴얼) [3] 過客 924 14 07-16
4355 소프트웨어| GPT 파티션 삭제 및 재구성 / EASEUS Partition Master 16 [9] 무월 1511 29 07-14
4354 소프트웨어| iVentoy 만능윈도우(WIM) 자동 설치 [20] 무월 4249 66 07-08
4353 소프트웨어| iVentoy PXE 부팅 네트워크 OS 설치 [25] 무월 1722 39 07-02
4352 기 타| 배치 파일 %~1 [13] bangul 1610 14 07-02
4351 윈 도 우| Microsoft Edge 브라우저 제거 [23] 무월 2399 36 06-30
4350 모 바 일| 동영상을 원 속에 넣어 합성하는 방법 Mobile PowerDirect... [1] 무림거사 1004 2 06-29
4349 윈 도 우| 윈도우11,10 MS계정 없이 로컬 계정으로 설치하기 [31] 무월 3894 33 06-23
4348 윈 도 우| 윈도 에러 생길때, 모든 이벤트 로그 한꺼번에 보기 [10] zerojiddu 1262 10 06-23
4347 윈 도 우| OneDrive 설치 방지, Microsft Edge 바로가기 생성 방지 [3] 무월 1039 11 06-23
4346 윈 도 우| 윈도우10 & 11 작업표시줄 시계에 요일 나오게 하는 방법! [28] 무월 2388 33 06-21
4345 윈 도 우| 한글 자음 모음 분리 현상 해결 방법 [7] 무월 1313 14 06-21
4344 기 타| 레마클로님 wifi on/off 스크립트 (수정) pnputil 추가 [10] 슈머슈마 889 7 06-20
4343 윈 도 우| 윈도우11 네트워크 인터넷 연결 없이 설치하기 [6] 무월 2320 16 06-20
4342 윈 도 우| 파워쉘로 움직이는 .gif 바로 만들기 [6] zerojiddu 992 10 06-18
4341 기 타| Windows 10 pe 디스플레이 레지스트리 [4] bangul 1527 16 06-13
XE1.11.6 Layout1.4.8