윈 도 우 Move over there 우메뉴등록_제거 + 그룹정책 백복
2020.03.25 23:57
지후아빠님 자료 https://windowsforum.kr/lecture/13049139 에 이어서 ...지후아빠님 강좌에서 많이 베꼈(?)습니다.
수정한 것으로 사용해보세요.
https://windowsforum.kr/lecture/13133811
1. 우메뉴등록파일 실행
2. 폴더 선택창에서 대상폴더를 선택하면
C:\Windows\System32\MoveOverthere.vbs의 백업 대상폴더가 수정됩니다.
3. 테스트
백업을 원하는 파일 마우스 우클릭(또는 여러파일 폴더 드래그 앤 우클릭)
; OverwriteExisting + move(copy가 아님)
copy로 바꾸려면 f.DeleteFolder Arg,OverwriteExisting를 지우면 됩니다
4. 백업대상 폴더 변경하려면
바탕화면 아무 곳 마우스우클릭, 재설정...
5. 제거는 제거파일....실행
MoveOverthere.vbs (C:\Windows\System32\MoveOverthere.vbs)
Const MyDestinationFolder = "D:\#_자료백업#\"
Const OverwriteExisting = True
Dim gFile, gFolder, f, a, s, o
Dim Arg
Set o = CreateObject("WScript.Shell")
Set f = CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count = 0 Then
w = WScript.ScriptFullName
Set a = f.OpenTextFile(w, 1)
a.SkipLine : s = chr(13) & Chr(10) & a.ReadAll : a.Close
strPath = SelectFolder(strPath)
If strPath = vbNull Then
o.popup " 취소 중 ... 3초 후 닫혀요 .... ", 3, "취소 중"
Else
strPath = chr(34) & strPath & "\" & chr(34)
Set a = f.CreateTextFile(w, True)
a.Write "Const MyDestinationFolder = " & strPath & s : a.Close
End If
End If
If WScript.Arguments.Count > 0 Then
For Each Arg in Wscript.Arguments
Arg = Trim(Arg)
If InStr(Arg,".") Then
Set gFile = f.GetFile(Arg)
gFile.Copy MyDestinationFolder & gFile.Name,OverwriteExisting
f.DeleteFile Arg,OverwriteExisting
Else
Set gFolder = f.GetFolder(Arg)
gFolder.Copy MyDestinationFolder, OverwriteExisting
f.DeleteFolder Arg,OverwriteExisting
End If
Next
End If
Const MY_COMPUTER = &H11&
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function SelectFolder(strPath)
Dim objFolder, objShell
On Error Resume Next
SelectFolder = vbNull
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(MY_COMPUTER)
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path
Set objFolder = objShell.BrowseForFolder(0, "초기설정 >>> 파일을 이동할 대상 폴더 선택", 0, strPath)
If IsObject(objfolder) Then SelectFolder = objFolder.Self.Path
Set objFolder = Nothing
Set objshell = Nothing
On Error Goto 0
End Function
MoveOverthere우메뉴등록.vbs
On Error Resume Next
If WScript.Arguments.length = 0 Then
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "wscript.exe", Chr(34) & WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else '-------------------------------------------------------------
Set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
curDir = FSO.GetParentFolderName(WScript.ScriptFullName)
strREfile = curDir & "\RExplore.exe"
strSystem64 = WshShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\"
OSArchCheck = WshShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE")
If OSArchCheck = "x86" Then
strSystem86 = strSystem64
Else
strSystem86 = WshShell.ExpandEnvironmentStrings("%SystemRoot%") & "\SysWOW64\"
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
strDir = strSystem64 & "MoveOverthere.vbs"
sRegFile = curDir & "\MoveOverthere.reg"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FSO.CopyFile curDir & "\MoveOverthere.vbs", strSystem64, true
WshShell.Run "regedit.exe /s " & Chr(34) & sRegFile & Chr(34), 0, True
WshShell.Run Chr(34) & strREfile & Chr(34), 0, true
WshShell.popup " 5초 만 기다려요 .... ", 5, "작업 중"
WshShell.Run Chr(34) & strDir & Chr(34), 1, true
'현 폴더 자폭
'strCurDir = WshShell.CurrentDirectory
'WshShell.CurrentDirectory = ".."
'FSO.DeleteFolder(strCurDir)
End If
그룹정책 백업복원 GPO.7z
https://www.autoitscript.com/forum/files/file/461-gpo-tool/
GPO폴더명 유지해야 백업됩니다.
사용 후, 4개 파일 삭제 필요...
댓글 [10]
-
레마클로 2020.03.26 00:05 -
하늘개구 2020.03.26 02:13
항상 많은 배움 주심에 고개숙여 감사드립니다!~ 꾸-벅
건강 조심하십시요!~
-
지후빠 2020.03.26 09:25
이제 막 출근해서... 시간 나면 살펴 봐야 겠습니다.^^ 또 뭘 배울지...
번쩍 아이디어가 떠오르는 것 같기도 하구요.
-
레마클로 2020.03.26 09:54 어떻게 폴더 재설정을 하게 할지 많이 고민 했었습니다. 바탕우클릭으로 결정했지만 context menu가 지저분해지더군요.
휴지통의 context menu에도 보이고.
주말까지 딸 컴을 납품(?)해야 해서 .. 거기 넣어주려구요.
수정 부탁드립니다. 아이디어도 추가 해 주시고....^^
-
지후빠 2020.03.26 12:45
저는 Total Commander 사용하고 탐색기는 사용하지 않아서 context menu에 추가하는 어떤 것은 하지를 않았습니다.
간혹 필요해서 sendto에 넣어 사용하는 것을 만들기는 하지만 사실 TC 매개변수 %P%S 와 sendto에서 받는 argument가
같아서 TC용인지 sendto용인지 구별할 필요가 없습니다. 우클릭 메뉴는 항상 기본으로만 사용하고 있습니다.^^;;;
스크립트 보다 보면 아이디어도 떠오르고 해서 수정해보지만 항상 선을 넘는 것 아닌가 싶어서 조심스럽습니다.
학습 목적으로 했다지만 혹 상대방이 언짢아 하면 곤란해서요. 코드를 정리하다 보면 핵심을 건지는 경우가 많은 것 같습니다.
제가 올린 스크립트는 어떤 형식으로든 활용하셔도 좋습니다. 예제에서 배우는 것이 가장 빠르다는 경험을 했습니다. :-)
제가 수정할 때 모든 것은 제 입맛에 맞게 고치기 때문에 그점은 이해 부탁드립니다. 이름들 까지도... ㅎ
살펴보고 도움이 될 것 같으면 올려보겠습니다. 감사합니다.^_^
-
레마클로 2020.03.26 13:02 선 넘으셔도 되고, 다 됩니다.^^
저의 경우는 실제 사용할 목적이 아니면 건드리지도 않습니다.
더 세련되고 훌륭하면 제꺼 버립니다.
배울자세 되어 있으니 걱정마시고...
-
지후빠 2020.03.26 16:10
BrowseForFolder 에서 ShellSpecialFolderConstants 중 17(&h11) 작동하지 않습니다. 최신 OS에서...
VbsEdit에 있는 Sample 중 List All Special Folders in Windows를 CScript로 시작해보십시오. :-)
-
레마클로 2020.03.26 16:20 17 넣어 봤었습니다. 안된 원인이 있었군요.ㅠㅠ
-
cungice 2020.03.26 20:15
수고 많으셨습니다. 감사합니다.
-
지후빠 2020.03.28 09:23
주말에 시간이 안될 것 같아 다음주에 도전해 보겠습니다.^^
좋은 타이밍을 놓치는 것 같습니다.ㅠㅠ
1. 레마클로님 설정 부분을 확장시킨 개념으로 수정하다 멈춘 상태입니다. 넘 일을 크게 시작한듯...
2. Over There의 복사 폴더 루트를 지정해두면 VTool중 아래 List 부분 활용하여 서브 폴더를 읽어들여서
선택된 서브폴더로 이동하게 해보려고 합니다. (같은 드라이브에서는 복사 보다는 이동이 속도면에서 유리할 것 같습니다.)
3. 얼마전 알게된 DynaLib 이용하여 Scroll Lock이 켜져 있으면 설정을 진행하게 하는 방법도 생각해봤는데
그러면 외부 것들이 너무 덕지덕지 붙을 것 같아서 좀 꺼려집니다. arg 없이 실행하면 설정모드로 들어가는 아이디어가 더 좋긴 합니다.^^
수정할 곳 있으면 고쳐주세요.^^
(제 컴에선 정상작동...)