소프트웨어 (추가3) 클립보드로 파일명 복사, VBScript에서, 유틸 소개
2020.04.06 13:32
안녕하세요. 이전에 소개한 ARGS2CLP 가 업데이트 되어서 귀찮게하는 메세지 창이 없어졌습니다.
이메일로 요청드렸더니 흔쾌히 개선해 주셨네요.^^ http://eriedel.info/en/index.html
- 이전 게시물; https://windowsforum.kr/lecture/13097992
- 바이러스토탈에서 2개 걸리네요. 주요한 백신에서는 문제가 없는 것 같습니다만...
이전에 레마클로님이 올리신 게시물 기능과 비슷할까요? 제대로 안봐서...
- 레마클로님 게시물; 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) 선택
- 복사방식 선택; 이름만 복사, 이름만 복사하는데 클립보드에 덧붙이기, 전체경로 복사, 전체경로 복사하는데 클립보드 내용에 덧붙이기
- 메모장에 붙여넣기 한 결과
- 스크립트를 메모장으로 열어보면 다음과 같은 것을 설정할 수 있게 하였습니다. 해당 라인 맨앞 홑따옴표만 지우고 저장하시면 됩니다.
--- 경로 앞,뒤에 쌍따옴표를 추가하기
--- 폴더일때 뒤에 \을 붙이기
--- 마지막 줄바꿈을 없애기
--- 복사후 클립보드 내용을 보여주기
3. VTool 이용하는 방법 연습중에 있습니다. 2번 보다는 check box를 이용하는 것이 좋을 것 같아서 아래처럼 수정해 보았습니다.
- 2번과 사용방법은 같고 아래처럼 창이 하나 나타나는데 원하는 옵션 선택후 실행하면 됩니다. UI font size가 작네요ㅠㅠ.
- Copy to Clipboard(vt-check).vbs
- 개발자와 e-mail을 주고 받던중 폰트 대체에 관한 레지스트리를 알게 되어 "MS Shell Dlg 2" 값 tahoma를 malgun으로 바꿨더니 아래처럼 훌륭하게 화면이 출력되네요. 다른 문제가 없다면 이렇게 해결하는 것도 한 방법이겠습니다. Font MS Shell Dlg 2 setting.reg
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
- 방법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
(이 창은 피할 수 있는 방법이 있을까요?) -> 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을 쓰고 있어서 테스트후 괜찮으면 한글화 해보겠습니다.
댓글 [18]
-
지후빠 2020.04.06 13:40
-
slimpig 2020.04.06 15:57 감사합니다.^^;
-
레마클로 2020.04.06 16:45 C:\Windows 에 vtool.exe를 넣고 사용하는거죠?
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
파일명 클립복사 잘 됩니다.
-
지후빠 2020.04.06 17:43
넵, vtool.exe(필수)와 vtoolc.exe(선택,CWindow 사용하고 싶으면 설치)을 c:\windows 폴더 등 적절한 곳에 복사해두고
다음처럼 시스템에 등록하시면 됩니다.
vtool.exe /regserver
vtoolc.exe /regserver
제거할때는 다음과 같이 하시고 파일을 삭제하시면 됩니다. ^^
vtool.exe /unregserver
vtoolc.exe /unregserver
-
레마클로 2020.04.06 19:43 vtool.exe /regserver 하지않고 c:\windows\vtool.exe 를 더블클릭 한 번 해 주고,
파일명 복사 테스트 했는데 동작 했습니다.
그렇게 해도 시스템에 등록된 건지요?
ARGS2CLP.exe는 여러파일,폴더 경로도 복사되는 군요.^^
(ARGS2CLP.exe를 sendto 폴더에 넣고 실행....)
-
지후빠 2020.04.06 21:52
더블클릭은 안해봐서... 아마 기본은 설치인 모양입니다.^^
ARGS2CLP를 sendto에 넣으면 젤 깔끔하죠. 실행할때 화면이 잠깐 깜박이는 것이 싫으시면 단축아이콘 만들고 속성에서 실행; 최소화
-
레마클로 2020.04.06 23:39 -
지후빠 2020.04.07 05:05
올리기 직전 중간중간 테스트 코드 몇줄 지우면서 필요한 한줄을 지워서... 죄송합니다. 다시 올렸습니다.^^
-
슬림한돼지 2020.04.07 20:24 추가3 을 기다리면 ㅎ;;
-
슬림한돼지 2020.04.08 01:05 추가3 만쉐!!!
-
지후빠 2020.04.08 13:26
감사합니다.^^
-
레마클로 2020.04.08 01:09 연일 수고 많으십니다.^^
참고하세요.
-
지후빠 2020.04.08 09:41
수고하셨습니다. 해보니 문제 없게 됩니다. 해당 레지를 찾아봐야 하겠습니다.^^
-
레마클로 2020.04.08 12:24 (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones)
위 레지는 제 컴에서 "스크립트 클립보드 허용"만 체크하고 내보내기 한 레지입니다.(ie11)
참고하세요.^^ ---> 1407
아래는 구글 검색한 내용들
--------------------------
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4]
"DisplayName"="제한된 사이트"
; 1407: 스크립팅: 프로그램 클립보드 액세스 허용
"1407"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2]
@=""
"DisplayName"="신뢰할 수 있는 사이트"
"PMDisplayName"="Trusted sites [Protected Mode]"
"Description"="이 영역에는 사용자 컴퓨터나 데이터를 손상시키지 않을 것으로 신뢰되는 웹 사이트가 포함됩니다."
"Icon"="inetcpl.cpl#00004480"
"LowIcon"="inetcpl.cpl#005424"
"CurrentLevel"=dword:00010000
"MinLevel"=dword:00010000
"RecommendedLevel"=dword:00010000
;; 1407: 스크립팅: 프로그램 클립보드 액세스 허용
"1407"=dword:00000000
-
지후빠 2020.04.08 13:07
수고하셨습니다.^^ 다음 사이트에 정리된 것 같은데 실제는 좀 다른 것 같습니다.
인터넷 영역에서 사용자지정수준...에서 클립보드 엑세스 허용을 사용으로 하면 zones 3 1407의 값이 바뀌어야 할 것 같은데 그대로 있네요.
스크립트는 허용창 없이 작동하구요.^^ 좀 더 찾아 보아야 할 것 같습니다. 일단 레지도 살펴서 적용해보겠습니다.
찾았습니다. ^^ IE-인터넷-클립보드-허용.reg
USER에서 찾아야 하는데 MACHINE에서 계속 찾고있어서...
-
레마클로 2020.04.08 18:30 와~ 이런 곳이 있었네요?
-
지후빠 2020.04.08 20:54
영문 사이트로 갔었던 곳인데... 지나쳤습니다. ㅠㅠ
북마크 추가했습니다.^^
-
한번에한걸음씩 2020.04.12 02:46 왕초보라 그냥 글을 읽고 대단하시다는 생각만 하고 있습니다. 감사하게 잘 보았습니다.
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
3642 | 윈 도 우| [수정] RegOwnership 이용 : 레지소유권 얻기 <--> ... [9] |
|
1101 | 9 | 04-18 |
3641 | 윈 도 우| 윈10 에 기본장착된 "사용자휴대폰" 앱으로 PC ... [28] | 와니 | 6417 | 4 | 04-12 |
3640 | 윈 도 우| 확장자,숨김(OnOff - NoFile 레지) // 바탕아이콘 정렬문제... [6] |
|
1866 | 16 | 04-11 |
3639 | 소프트웨어| 파일 이름으로 폴더 만들고 이동하기 [14] | 지후빠 | 1962 | 15 | 04-10 |
3638 | 소프트웨어| SD카드를 공장초기화로 포맷을 합니다. [6] | 하늘은높고 | 3736 | 10 | 04-10 |
» | 소프트웨어| (추가3) 클립보드로 파일명 복사, VBScript에서, 유틸 소개 [18] | 지후빠 | 2163 | 11 | 04-06 |
3636 | 기 타| 원격 PC 종료 [7] | gooddew | 3866 | 9 | 04-06 |
3635 | 윈 도 우| Win PE에서 윈도우 UEFI설치를 합니다. [18] | 하늘은높고 | 5225 | 30 | 04-05 |
3634 | 윈 도 우| file_folder2Hide&show, vbe <--> vbs [2] |
|
690 | 8 | 04-03 |
3633 | 윈 도 우| Move over there 등록_제거 final 2020-04-15 [51] |
|
2746 | 22 | 03-29 |
3632 | 하드웨어| 메인보드 모델명 확인하기 [5] | gooddew | 3707 | 22 | 03-28 |
3631 | 소프트웨어| 진행바와 함께 URL 다운로드 VBS + AHK [15] | 지후빠 | 1406 | 10 | 03-28 |
3630 | 윈 도 우| Windows 10 버전별 CPU 지원 리스트.. [4] | 은주얌 | 3166 | 4 | 03-27 |
3629 | 윈 도 우| Gpedit.msc는 무엇 이죠? (구글링) [4] |
|
1374 | 1 | 03-27 |
3628 | 기 타| 특정 프로그램이 32비트? 64 비트? 여부 확인하기 [5] | gooddew | 1489 | 8 | 03-27 |
3627 | 윈 도 우| 레노버 노트북 충천USB 사용시 마우스 버벅거림 [1] | 번개 | 765 | 1 | 03-26 |
3626 | 윈 도 우| Move over there 우메뉴등록_제거 + 그룹정책 백복 [10] |
|
1235 | 11 | 03-25 |
3625 | 윈 도 우| 탐색기 화면에 글자가 부실해 보일 때 설정 방법 [1] | 하늘은높고 | 1460 | 3 | 03-25 |
3624 | 소프트웨어| VBScript 기능 확장하기 개요 - API, COM server [8] | 지후빠 | 1154 | 9 | 03-24 |
3623 | 소프트웨어| 압축 프로그램으로 삭제할 수 없는 파일 및 폴더 삭제하기 [7] | 5테라 | 1837 | 15 | 03-23 |
홍보; 이전에 다운로드 관련 올린 게시물 업데이트 했습니다. https://windowsforum.kr/lecture/13116677