본문 바로가기
운영체제/Windows

윈도우 배치파일(.bat) 만들기 (레지스트리를 통해 시작 프로그램에 등록) 및 유용한 명령어

by eteo 2023. 1. 18.

 

 

윈도우 배치파일(batch file)은 명령 프롬프트(cmd)에서 순서대로 실행할 명령어들을 한번에 일괄로 실행 실행할 목적으로 만드는 명령어들의 집합 파일이다.

 

 

 

 

보통 윈도우 배치 스크립트는

@echo off

로 시작해서 이후 실행할 명령어들이 나열된다.

 

여기서

@ 는 해당 명령어를 화면에 표시하지 말라는 뜻이고

echo off 는 이후 실행할 명령어들을 화면에 출력하지 않기 위해 echo를 끄는 것이다.

 

 

그 다음으로 아래 문구 또한 배치파일 초반에 적어두는 경우가 많다.

pushd “%~dp0”

보통 배치파일 스크립트는 실행될 위치를 염두해 두고 상대경로로 작성을 하게 되는데, 관리자 권한으로 배치파일을 실행시 명령 프롬프트 위치가 C:\WINDOWS\system32 로 실행되기 때문에 의도한 결과가 나오지 않게된다.

이런 상황을 막기 위해 위 명령어를 사용하면 명령프롬프트의 위치를 배치파일이 있는 경로로 되돌릴 수 있다.

 

pushd 대신

cd /d "%~dp0"

를 사용해도 된다.

 

 %0  파일 전체 경로  C:\Test\Path1\ex1.bat 
 %~d0  드라이브 명  C:
 %~p0  경로   \Test\Path1\
 %~n0  파일 명   ex1
 %~x0  확장자 명  .bat 
 %~dp0  드라이브와 경로  C:\Test\Path1\

출처 : https://chulhee.tistory.com/entry/dp0

 

 

 

 

테스트

테스트로 동일 디렉터리에 abc 라는 이름의 폴더를 지우는 배치파일을 만들어보자.

 

먼저 메모장을 하나 만들고 확장자를 .bat 으로 한다.

우클릭 - 편집

 

다음과 같이 입력한 후 저장한다.

@echo off

pushd “%~dp0”

rd /s /q abc

 

rd 는 디렉터리를 지우는 명령어인데 명령 프롬프트에서 rd /? 를 쳐서 설명을 볼 수 있다.

 

 

배치파일에 저렇게 입력하면 해당 경로에서 abc라는 이름의 폴더와 하위 경로의 파일 모두를 물어보지않고 삭제한다.

 

 

배치파일을 실행시키면 폴더가 삭제되는 것을 확인할 수 있다.

 

 

 

 

 

 

 

레지스트리를 이용해 시작 프로그램에 등록하는 배치파일 만들기

 

 

먼저 레지스트리에 등록하는 cmd 명령어는 다음과 같다.

 

 

 

REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f] [/reg:32 | /reg:64]

 

KeyName 은 레지스트리의 키 이름

/v 선택한 키에 추가할 데이터 이름

/t 추가할 데이터의 형식 (위에서 보듯 7가지가 있다.)

/d 데이터

/f 확인절차 없이 추가

 

 

 

위 커맨드 형식에 맞게 작성된 '레지스트리의 시작 프로그램 키'에 '구글 크롬 실행파일 절대 경로'를 'Start Chrome' 이라는 값이름으로 확인절차 없이 추가하는 스크립트이다.

@echo off

pushd “%~dp0”

reg add HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run /v "Start Chrome" /t REG_SZ /d "C:\Program Files\Google\Chrome\Application\chrome.exe" /f

참고 :

2022.11.03 - [운영체제/Windows] - Windows 10 ] 윈도우 시작 프로그램으로 등록하기

 

레지스트리를 편집하는거니 배치파일을 관리자 권한으로 실행해야 적용이된다. 윈도우를 다시 시작하면 크롬이 자동으로 실행될 것이다.

 

실행에서 regeit을 치고 확인해볼 수 있다.

 

 

 

 

 

레지스트리에서 값을 다시 삭제하는 명령어는 다음과 같다.

reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run /v "Start Chrome" /f

 

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 이라는 키에서

Start Chrome 이라는 이름의 값을 확인 절차 없이 삭제한다.

 

 

 

 

 

 

 

 

 

 

레지스트리 관련 명령어

 

 

 

 

 

 

 

 

일괄 작업에 유리한 forfiles 명령어

 

 

 

forfiles 명령어 사용예시

 

 

 

 

 

 

 

프로그램 실행 start 명령어

 

 

 

 

 

 

 

 

 

지역변수를 사용하기 위한 setlocal, endlocal 명령어

 

 

 

 

 

 

 

 

현재 디렉터리 경로를 스택에 쌓았다 꺼내는 pushd, popd 명령어

 

 

 

 

 

 

 

 

파일삭제 del 명령어