강좌 / 팁

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

2020.04.06 13:32

지후빠 조회:2081 추천: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 - - -
4330 NTLDR 을 메인 부트로더로 XP,Win7 멀티부틸 [1] 농축 우라 23338 0 05-27
4329 윈 도 우| 팟플레이어 DXVA 총정리 - ① 코덱 설치 [14] 고달픈명탐 23257 2 01-09
4328 윈 도 우| 초보용 팁 _ Winxpe 로 PE 만들기 [41] lakeside 23114 36 05-25
4327 윈 도 우| window7 업데이트 후 찌꺼기도 제거 [10] 개명박 23051 2 02-25
4326 하드웨어| USB로 XP 비스타 Windows7 설치방법 모음 2010.04.23 [6] BeMoreSee 22991 2 04-24
4325 윈 도 우| USB에 ISO째 넣어 순정XP/7설치하기(grub4dos활용) [1] YhK군 22965 1 09-24
4324 윈 도 우| xp sysprep wim 파일 + CD로 구운 PE + USB + XP 설치 CD [9] iron 22891 2 02-27
4323 하드웨어| iPhone/ iPad로 무선프린터 사용(AirPrint)-윈도우PC가능 [3] 이건뭔가요 22761 0 11-08
4322 윈 도 우| "새 시스템 파티션을 만들거나 기존 시스템 파티션을 ... [7] 메리아 22738 3 03-25
4321 윈 도 우| 토큰 최적화의 중요성 [15] 라라라 22734 0 09-17
4320 소프트웨어| notepad++, Notepad2, EditPlus 한글폰트깨짐 해결법 [6] ksjin 22712 0 09-07
4319 윈 도 우| 4GB 제한의 진실 [5] 모글리 22668 1 02-26
4318 윈 도 우| 공유기에 연결된 인터넷이 끊길 때 응급처지법 [14] 왔따다 22638 1 04-12
4317 Windows 7 Service Optimizer 때문에 한글입력기가 안나오... [5] Mr.King 22628 0 08-14
4316 윈 도 우| 익스플로러 딜레이 막기 꼼수[수정] [17] ▒벗님▒ 22569 0 11-03
4315 하드웨어| samsung 노트북 exe 실행파일에서 원본바이오스만 추출방법 gooddew 22505 0 06-17
4314 윈 도 우| SkyDriverXP와 NowPrep을 이용한 XP 만능고스트 만들기(링크) [3] 파워레이드 22499 1 10-31
4313 윈 도 우| 아이콘 재생성과 작업표시줄 알림아이콘 흔적 지우기 [9] 애벌레 22449 0 06-27
4312 윈 도 우| imagex로 install.wim 캡쳐하기 [9] 하늘보기 22431 6 03-15
4311 윈 도 우| 윈도우 8.1 업데이트 후 인증 성공!! [42] Jinoo 22313 0 10-22
XE1.11.6 Layout1.4.8