PC포멧 시 백업하는 패치파일 만들기
: C드라이브의 바탕화면, 다운로드, 즐겨찾기, 공인인증서
PC포멧 요청이 들어오면 반드시!!! 백업파일을 만들어달라고 한다. 그러나 그들도 사람(?)이니... 자주하는 실수가
1) 백업파일 안만듬 (?)
2) 폴더를 바로가기로 해놓음.
3) 포맷 후 즐겨찾기가 없어졌다. 공인인증서가 어디갔냐고 따짐...
4) 기타 등등
이런경우를 대비해서 !
C드라이브에 있는 사용자들의 파일들을 D:드라이브의 폴더로 자동으로 백업파일들을 생성/복구해주는 배치파일이다.
(포멧을 C:드라이브만 하고 D:드라이브는 남길거라 가정)
[기능1-백업]
- C드라이브의 바탕화면 전체 폴더랑 파일
- 다운로드 폴더 전체
- 웹사이트 즐겨찾기
- NPKI(공인인증서)
[기능2-복구하기]
- D드라이브의 백업되있던 폴더에서 다시 C의 바탕화면/다운로드 폴더로 옮기기
- 즐겨찾기 옮기기
- NPKI 옮기기
근데 이 정도로 백업을 해줘도 없어졌다고 따지면... 본인 책임인거같다^^
* cf) 스티키메모도 백업하려고 하는데 자동으로 다른 서버에 저장이되는지 백업 후 메모 수정 후 다시 백업 파일로 덮어써도 수정 후로 돌아와서 생략했습니다...
구성
1. 배치 파일 실행 시 메뉴가 만들어서 백업하기/복구하기/나가기 구현하기
2. 백업하기(1번) 누르면 백업진행
3. 복구하기(2번) 누르면 백업한거 복구 진행 + 원본 파일 지울지 묻기
4. 끝내기(3번)
5. 2,3번 과정 후에 다시 초기메뉴로 돌아오게 하기
6. 검정화면에 흰색글자 말고 바꿔보기
사용한 문법
: echo, title, mode, color
: cls, set /p, if, goto, xcopy, pause, start
: REM
등등
코드
//우선 화면구성을 하자
@echo off
TITLE 파일 자동으로 백업/복구하기
MODE CON COLS=80 LINES=25
COLOR E0
0 = 검정색 8 = 회색
1 = 파랑색 9 = 연한 파랑색
2 = 초록색 A = 연한 초록색
3 = 옥색 B = 연한 옥색
4 = 빨강색 C = 연한 빨강색
5 = 자주색 D = 연한 자주색
6 = 노랑색 E = 연한 노랑색
7 = 흰색 F = 밝은 흰색
COLOR 배경-글자색
//초기 메뉴구성
GOTO 함수
GOTO 뒤에 레이블을 적어두면 그 레이블로 이동하게해줍니다. 레이블은 : 뒤에 적으면 됩니다.
예)
배치파일 코드
GOTO B
GOTO A
:A
echo A실행
:B
메롱
결과
메롱
A실행
GOTO 함수를 사용해서 사용자 선택을 받아서 선택한 레이블로 이동하게 해준다
* 초기화면
1) _MENU
* 사용자 선택 화면
2) _B1 //백업하기
3) _B2 //복구하기
4) _END //끝내기
:_MENU
CLS
@echo 1 : 백업하기
@echo 2 : 백업 복구하기
@echo 3 : 끝내기
REM 사용자한테서 메시지 받기
set /p Input= 선택하세요 :
set /p 변수=입력받는곳앞의문자
If %Input%==1 GOTO _B1
If %Input%==2 GOTO _B2
If %Input%==3 GOTO _END
GOTO _MENU
:_B1
ECHO 백업을 시작합니다.
echo d | XCOPY C:\USERS\%username%\DESKTOP D:\Backup1\Desktop /s /h /e /d /y
echo d | XCOPY C:\USERS\%username%\Downloads D:\Backup1\Downloads /s /h /e /d /y
echo d | XCOPY C:\USERS\%username%\Favorites D:\Backup1\Favorites /s /h /e /d /y
echo d | XCOPY C:\USERS\%username%\Appdata\LocalLow\NPKI D:\Backup1\NPKI /s /h /e /d /y
ECHO 백업이 완료되었습니다.
start D:\Backup1
PAUSE
GOTO _MENU
xcopy "복사할 대상 폴더 위치" "백업될 폴더 위치" /s /h /e /d /y
- 부연설명 -
/s : 복사할 폴더 내 모든 하위폴더를 포함
/h : 숨김파일, 시스템파일을 포함
/e : 비어 있는 폴더를 포함
/d : 복사를 하되 날짜기록에 변경사항이 없으면 건너뛰고 복사
/y : 물어보는 질문없이 복사
REM 백업한거 복구하기
:_B2
ECHO 복구를 시작합니다.
echo d | XCOPY D:\Backup1\Desktop C:\USERS\%username%\DESKTOP /s /h /e /d /y
echo d | XCOPY D:\Backup1\Downloads C:\USERS\%username%\Downloads /s /h /e /d /y
echo d | XCOPY D:\Backup1\Favorites C:\USERS\%username%\Favorites /s /h /e /d /y
echo d | XCOPY D:\Backup1\NPKI C:\USERS\%username%\Appdata\LocalLow\NPKI /s /h /e /d /y
ECHO 복구가 완료되었습니다.
set /p result1= 기존 파일을 삭제하겠습니까?(1.네(삭제)/2.아니요(기존파일 남김)):
If %result1%==1 ( rmdir D:\Backup1 /s /q echo D:\Backup1 폴더와 안의 내용이 삭제 되었습니다. )
// 백업 후 기존 원본 파일 삭제 여부 묻기
PAUSE
GOTO _MENU
REM 끝내기
:_END
exit
실행결과
전체코드
@echo off
TITLE 파일 자동으로 백업/복구하기
MODE CON COLS=80 LINES=25
COLOR E0
:_MENU
CLS
@echo 1 : 백업하기
@echo 2 : 백업 복구하기
@echo 3 : 끝내기
set /p Input= 선택하세요 :
REM gset /p 변수=입력받는곳앞의문자
If %Input%==1 GOTO _B1:
If %Input%==2 GOTO _B2:
If %Input%==3 GOTO _END:
GOTO _MENU
REM 사용자한테서 메시지 받기
:_B1 ECHO 백업을 시작합니다.
echo d | XCOPY C:\USERS\%username%\DESKTOP D:\Backup1\Desktop /s /h /e /d /y
echo d | XCOPY C:\USERS\%username%\Downloads D:\Backup1\Downloads /s /h /e /d /y
echo d | XCOPY C:\USERS\%username%\Favorites D:\Backup1\Favorites /s /h /e /d /y
echo d | XCOPY C:\USERS\%username%\Appdata\LocalLow\NPKI D:\Backup1\NPKI /s /h /e /d /y
ECHO 백업이 완료되었습니다.
start D:\Backup1
PAUSE GOTO _MENU
:_B2 ECHO 복구를 시작합니다.
echo d | XCOPY D:\Backup1\Desktop C:\USERS\%username%\DESKTOP /s /h /e /d /y
echo d | XCOPY D:\Backup1\Downloads C:\USERS\%username%\Downloads /s /h /e /d /y
echo d | XCOPY D:\Backup1\Favorites C:\USERS\%username%\Favorites /s /h /e /d /y
echo d | XCOPY D:\Backup1\NPKI C:\USERS\%username%\Appdata\LocalLow\NPKI /s /h /e /d /y
ECHO 복구가 완료되었습니다.
set /p result1= 기존 파일을 삭제하겠습니까?(1.네(삭제)/2.아니요(기존파일 남김)):
If %result1%==1 (
rmdir D:\Backup1 /s /q
echo D:\Backup1 폴더와 안의 내용이 삭제 되었습니다.
)
PAUSE GOTO _MENU REM 끝내기
:_END
exit