배치파일 구성? 편집?

차평석   
   조회 6428   추천 0    

 
한 폴더에 '병원업무'란 폴더와 '핵심업무'란 폴더가 있습니다.
 
매일 백업이 시행되는데 윈도우 고유백업프로그램을 사용하지 않고 그냥 동기화를 통한 파일복사를 하고 있습니다.
 
저는 매일 아침 백업이 끝났으면 폴더이름에 전날짜를 추가하는 형태로 폴더이름을 바꾸고 다시 '병원업무'란 폴더와 '핵심업무'란 폴더를
 
생성해 놓구요. 그러다가 이렇게 해보았습니다.
 
rename 병원업무 병원업무2013
rename 핵심업무 핵심업무2013
mkdir 병원업무
mkdir 핵심업무
 
일단은 이렇게 배치파일로 만들어놓았는데 위에 두 줄 'xx업무2013'에 날짜를 전날짜로 생성하게 하는 ... 머시기가 없는지
 
여쭙고 싶습니다. 프로그래밍적인 내용은 아예 모르는지라..
 
짧은글 일수록 신중하게.
이해하면 2013-04
날자 를 호출 하는 배치 파일 함수가 있습니다 ^^ 그걸 적절하게 이용하시는건 어떠신지요.
geeksquad 2013-04
병원업무2013 가 정확한이름인가요 날짜가 어떻게 들어가는지요 ??

병원업무130424 이런식?
병원업무2013-0424 이런식?
박남규 2013-04
이런 방법도 있습니다.
배치를 전날 수행하고,
sleep으로 재웠다가 다음날에 rename 수행하는 방법입니다.
가령, crontab에 23:59분에 수행하도록 배치를 걸어놓습니다.
배치 내용에는 아래와 같이 작성합니다.
work_date=`date +%Y%m%d`
sleep 61
rename xx업무 xx업무${work_date}

--> 61초 재우니, 다음날 0:00:01 이 되겠지요...
그때 수행합니다....
어니스트 2013-04
http://blog.naver.com/PostView.nhn?blogId=nativekim&logNo=40182035728

이런명령어도 있내요.

참고해보새요.
무명대인 2013-04
병원업무20130423 이런식이요
무명대인 2013-04
일단은 이렇게 하니까 결과는 제가 원하는 것으로 나오네요. 다만 날짜가 오늘날짜가 나온다는 것이 좀 문제지만요. 전 어제 날짜가 나오길 원하는데..

@echo off

setlocal

; %date%에서 모든 하이픈(-)을 지워 버림

set date2=%date:-=%

; %time%에서 모든 공백을 0으로 고침 (시각 부분이 zerofill된 게 아니라 그냥 right justify 되어 있어서...)

set time2=%time: =0%

; %time2%의 시각 부분과 분 부분만 잘라 냄

set time3=%time2:~0,2%%time2:~3,2%

; 이제 두 변수를 이어 붙여서 디렉토리를 만들면 땡!

rename 병원업무 병원업무%date2%

rename 핵심업무 핵심업무%date2%

mkdir 병원업무

mkdir 핵심업무


endlocal

echo on
geeksquad 2013-04
아 위에 댓글주셧는데 제가 못봤네요 일단 날자변수는 년월일 로 3개 만드셔서 if 문으로 년초 월초에는 -1 시키는 라인을 추가하시면 됩니다.
조영민 2013-04
@echo off
setlocal
; %date%에서 모든 하이픈(-)을 지워 버림
set date2=%date:-=%

set /a date2-=1

; 이제 두 변수를 이어 붙여서 디렉토리를 만들면 땡!

rename 병원업무 병원업무%date2%

rename 핵심업무 핵심업무%date2%

mkdir 병원업무

mkdir 핵심업무


endlocal

echo on
무명대인 2013-04
우리 회원님들의 도움으로 인해 완성되었습니다. 날짜를 하루 빼고 넣고 하는 것은 작업스케쥴을 오늘 날짜로 잡냐 내일 날짜로 잡냐의 차이였구요. 아무튼 마음 깊이 감사드립니다.
geeksquad 2013-04
@echo off
cls
title [Powered by Lolipop@2cpu - 기지(기술지원) 1.1 Rev 1] & color 1f &mode con cols=70 lines=19
rem 변수지정
:start
set oy=%date:~0,4%
set om=%date:~5,2%
set od=%date:~8,2%

if %om% EQU 1 set /a md=31 &goto yun
if %om% EQU 2 set /a md=31 &goto yun
if %om% EQU 3 set /a md=28 &goto yun
if %om% EQU 4 set /a md=31 &goto yun
if %om% EQU 5 set /a md=30 &goto yun
if %om% EQU 6 set /a md=31 &goto yun
if %om% EQU 7 set /a md=30 &goto yun
if %om% EQU 8 set /a md=31 &goto yun
if %om% EQU 9 set /a md=31 &goto yun
if %om% EQU 10 set /a md=30 &goto yun
if %om% EQU 11 set /a md=31 &goto yun
if %om% EQU 12 set /a md=30 &goto yun


rem 윤달검사
:yun
set /a u=^%oy^% ^% 4
if not %u%==0 goto calc
set /a u=^%oy^% ^% 400
set /a v=^%oy^% ^% 100
if %v%==0 if not %u%==0 goto calc

if %om% EQU 3 set /a md=md+1


rem 날자 계산
:calc
set ny=%oy%
if %om% EQU 1 if %od% EQU 1 (set /a ny=%oy% - 1& set /a nm=12 &set /a nd=31 ) else (set /a nd=%od% - 1)
if %od% EQU 1 (set /a nm=%om% - 1 &set /a nd=%md% - 1) else (set /a nd=%od% - 1)

set nm=0%nm%
set nm=%nm:~-2%
set nd=0%nd%
set nd=%nd:~-2%

rem 경고창
echo.
echo.
echo    주의 !! ========================================================
echo.
echo.
echo              병원업무 폴더가 병원업무%ny%%nm%%nd%
echo.
echo              핵심업무 폴더가 핵심업무%ny%%nm%%nd%
echo.
echo.
echo                                            로 이름이 변경됩니다.
echo.
echo    ================================================================
echo.
echo    계속하시려면 아무키나 눌러주세요.
echo.
echo    나가시려면 창을 닫거나 Ctrl + C 혹은 Ctrl + Break 를 눌러주세요
pause>nul

rem 이름바꾸기
echo %date% %time% 에 백업 하였습니다. >> backuplog.txt
if exist "병원업무%ny%%nm%%nd%" goto ext_error
if exist "핵심업무%ny%%nm%%nd%" goto ext_error
ren "병원업무" "병원업무%ny%%nm%%nd%"
ren "핵심업무" "핵심업무%ny%%nm%%nd%"
md "병원업무"
md "핵심업무"
cls
echo.
echo.
echo    주의 !! ========================================================
echo.
echo.
echo              병원업무 폴더가 병원업무%ny%%nm%%nd%
echo.
echo              핵심업무 폴더가 핵심업무%ny%%nm%%nd%
echo.
echo.
echo                                            로 이름이 변경됩니다.
echo.
echo    ================================================================
echo.
echo    완료되었습니다.
echo.
echo    나가시려면 창을 닫거나 아무키나 눌러주세요.
pause>nul
goto end

:ext_error
cls
echo.
echo.
echo    주의 !! ========================================================
echo.
echo.
echo              병원업무 폴더가 병원업무%ny%%nm%%nd%
echo.
echo              핵심업무 폴더가 핵심업무%ny%%nm%%nd%
echo.
echo.
echo                                            로 이름이 변경됩니다.
echo.
echo    ================================================================
echo.
echo    어제 날짜로 된 백업폴더가 이미 존재합니다.
echo.
echo    나가시려면 창을 닫거나 아무키나 눌러주세요.
pause>nul

:end

<< 여기까지 메모장에 넣으시고 확장자를 cmd 나 bat 로 저장하신후 실행하면 됩니다.

실행하는 날짜 기준 -1 일 하도록 되어있습니다.

"2013-04-24 16:49:56.05 에 백업 하였습니다." 라는 내용의 로그파일도 만들어줍니다.

작업스케줄러 상관없이 시스템 변수에서 따와서 하루 뺀다음 이름변경 하는 소스입니다. 변수가 지저분하지요 ㅎㅎ

패킹해서 지저분한것좀 지워볼려고 했는데 ... 벌서 해결하셨다고 하니 다행입니다.
     
geeksquad 2013-04
혹시 날자가 정상적으로안나오신다면

이유는 2cpu 홈페이지 에서 각 줄에 마지막 글자뒤에 띄어쓰기를 한자씩 삽입하기 때문인데요

 메모장에서 파일을 연후 각줄의 맨뒤 1글자씩만 지워주시면 정상적으로 작동합니다.


QnA
제목Page 3521/5729
2015-12   1783294   백메가
2014-05   5258466   정은준1
2020-05   2800   2pcnhs
2018-01   5199   FAHRENHEIT
2023-05   1452   isaiah
2016-12   4471   PICT
2018-01   3684   나라사랑
2021-10   5122   그모도
2014-08   5158   blackra1n
2009-12   9690   오석구
2019-03   3262   미스터칠드런
2014-09   6433   대한민국
2018-01   7735   민사장
2010-01   9069  
2018-02   3591   서울사람
2020-06   2478   유토퍄
2014-09   4467   나비z
2016-01   5231   MA들
2018-02   4736   봉글
2016-12   7663   Win31
2019-04   5711   FreeBSD
2020-06   7415   비기너맨