Terry Very Good

[batch] batch 파일 만들기 모든 것(관리자 권한 실행, 프로그램 실행, send keys, time delay) 본문

프로그래밍

[batch] batch 파일 만들기 모든 것(관리자 권한 실행, 프로그램 실행, send keys, time delay)

테리베리 2022. 12. 19. 11:24
728x90
반응형

1. 특정 프로그램을 관리자 권한으로 실행하는 방법

 :: BatchGotAdmin
 :-------------------------------------
 REM  --> Check for permissions
 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
 if '%errorlevel%' NEQ '0' (
     echo Requesting administrative privileges...
     goto UACPrompt
 ) else ( goto gotAdmin )

:UACPrompt
     echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
     echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
     exit /B

:gotAdmin
     if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
     pushd "%CD%"
     CD /D "%~dp0"
 :--------------------------------------

 

2. 프로그램 동작시키는 명령

start /d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\" /b Outlook2016.lnk 
start /d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\RPADU\" /b RPADURobot.lnk

 

3. Time Delay를 주는 명령

TIMEOUT /t 60
TIMEOUT /t 10

 

4. 키보드를 입력하는 것과 동일한 명령을 주는 명령

powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{TAB}')"
powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{TAB}')"
powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{TAB}')"
powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{TAB}')"
powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{TAB}')"
powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{ENTER}')"

아래는 키보드 키에 해당하는 코드를 담아보았다.

 - (1). 특수키(조합가능)

Key Code
SHIFT +
CTRL ^
Alt %

 - (2). 일반키

Key Code
Backspace {백스페이스}, {B} 또는 {BKSP}
BREAK {중단}
CAPS LOCK {CAPSLOCK}
DEL 또는 삭제 {삭제} 또는 {삭제}
아래쪽 화살표 {를}
End {END}
Enter 키 {0} 입력} 또는 ~
ESC 키 {ESC}
HELP {도움말}
Home {0} 홈}
기능 또는 삽입 {삽입} 또는 {기능}
왼쪽 화살표 {LEFT}
NUM LOCK {NUMLOCK}
Page Down {PGDN}
Page Up {PGUP}
PRINT SCREEN {PRTSC} (사용 하도록 예약)
오른쪽 화살표 {RIGHT}
스크롤 잠금 {SCROLLLOCK}
Tab {TAB}
위쪽 화살표 {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
키패드 추가 {0} 추가}
키패드 빼기 {빼기}
키패드 곱하기 {곱하기}
키패드 나누기 {나누기}

 

5. 내가 만든 배치파일이다
 - Outlook과 RPA프로그램을 관리자모드로 실행하고, RPA 프로그램에 단축키를 줘서 자동 스케쥴링 주도록 만들었다.

 :: BatchGotAdmin
 :-------------------------------------
 REM  --> Check for permissions
 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
 if '%errorlevel%' NEQ '0' (
     echo Requesting administrative privileges...
     goto UACPrompt
 ) else ( goto gotAdmin )

:UACPrompt
     echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
     echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
     exit /B

:gotAdmin
     if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
     pushd "%CD%"
     CD /D "%~dp0"
 :--------------------------------------
TIMEOUT /t 60
start /d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\" /b Outlook2016.lnk 
TIMEOUT /t 10
start /d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\RPADU\" /b RPADURobot.lnk
TIMEOUT /t 10
powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{TAB}')"
powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{TAB}')"
powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{TAB}')"
powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{TAB}')"
powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{TAB}')"
powershell "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{ENTER}')"
%SendKeys% "^{TAB}"
%SendKeys% "^{TAB}"
%SendKeys% "^{TAB}"
%SendKeys% "^{TAB}"
%SendKeys% "^{TAB}"
%SendKeys% "{ENTER}"
728x90
반응형