배치파일에서 날짜와 시간으로 디렉토리를 생성하는 방법?

schiz21c의 이미지

안녕하세요..

windows의 batch파일에서

날짜와 시간이 들어가게 디렉토리 이름을 만들고 싶은데..

시간에 콜론이 들어가서 만들수가 없네요..

md %date%

이렇게 하면 날짜로된 디렉토리는 만들수가 있는데

md %date%%time%

으로 하면 time에 ":" 이 들어가 있어서 디렉토리를 만들수가 없네요

배치파일 작성으로 이렇게 날짜, 시간이 들어간 디렉토리를 만들수 있을까요? (예: "2005-10-11_1259")

perl을 사용하면 될거도 같은데.. perl에는 문외한이라 -_-;;

고수님들의 답변 기다리겠습니다..

paperplane의 이미지

리눅스 쉘 프로그램에서는 FILENAME=`LANG=C date

리눅스 쉘 프로그램에서는

FILENAME=`LANG=C date +%F"-"%H"-"%M"-"%S`

이런 식으로 파일이름을 만든 적이 있었는데...

(결과는 2005-10-11-13-01-42 이런식으로 나옵니다...)

윈도우이시라면... 어찌할 바를 모르겠군요^^;;;;

galien의 이미지

python으로 하면[code:1]import os, time

python으로 하면

import os, time
now = time.localtime()
os.mkdir(str(now.tm_year)+'-'+str(now.tm_mon)+'-'+str(now.tm_mday)+'-'+str(now.tm_hour)+str(now.tm_min))

정도하시면 코드는 지저분해도 대충 돌아갈 거 같습니다.

doldori의 이미지

저는 C로... ^^;[code:1]#include <time.

저는 C로... ^^;

#include <time.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    char name[20], command[30] = "mkdir ";
    time_t now = time(NULL);
    strftime(name, 20, "%Y-%m-%d_%H%M", localtime(&now));
    system(strcat(command, name));
    return 0;
}

wariua의 이미지

저는 vbs로...;;[code:1]dateStr = FormatDa

저는 vbs로...;;

dateStr = FormatDateTime(Now, vbShortDate)
timeStr = FormatDateTime(Now, vbShortTime)

dirName = dateStr & "_" & Left(timeStr, 2) & Right(timeStr, 2)

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CreateFolder(name)

배치 파일을 vbs로 갈아엎기는 좀 그러니, 배치 파일에서 이 스크립트를 실행하면 되겠네요.

schiz21c의 이미지

답변 감사드립니다~~&gt; 배치 파일을 vbs로 갈아엎기는 좀

답변 감사드립니다~~

> 배치 파일을 vbs로 갈아엎기는 좀 그러니, 배치 파일에서 이 스크립트를 실행하면 되겠네요.

정확히 용도를 지적해 주셨네요..^^

현재의 batch파일을 전부 다른 언어나 스크립트로 수정하기는 귀찮아서 질문드린거고요..-_-

추가로 하나더 질문 드리면, dirName을 윈도우의 환경변수로 설정하여

batch파일 에서 vbs를 호출한후에도 그 디렉토리를 엑세스 하였으면 하는데 잘 안되네요..

예: test.bat )

createDir.vbs <= 여기서 %dirNameStr% 을 세팅해 준다면...
copy *.log %dirNameStr%
copy *.error %dirNameStr%
...

이렇게 사용하고 싶습니다...^^

taeyeung의 이미지

뒷 북 치는 거지만 perl도 올려 봅니다.[code:1]use

뒷 북 치는 거지만 perl도 올려 봅니다.

use POSIX qw(strftime);

$dir_name = strftime "%Y-%m-%d-%H-%M-%S", localtime();

system( "mkdir " . $dir_name );

wariua의 이미지

아아, 호출하는 배치 파일에서 디렉터리 이름을 사용해야 하는군요. 대략

아아, 호출하는 배치 파일에서 디렉터리 이름을 사용해야 하는군요. 대략 낭패입니다 :x 잠시 구글님을 졸라보았으나 하위 스크립트(createDir.vbs)가 출력한 결과를 바로 환경 변수로 저장할 수 있을 만한 방법은 모르겠네요. 그러니 얼른 Perl을 공부하셔서... (퍼벅-)

상당히 거슥한 방법입니다만, createDir.vbs에서 '환경변수 dirName을 설정해 주는 스크립트'를 만들어 주는 건 어떨까요? 대략,

@set dirName=blahblah

라는 내용이 들어있는 파일을 만들어 주면 될 테구요. createDir.vbs가 setDirName.bat라는 파일을 만들어 주도록 하고서, test.bat에서는 createDir.vbs를 실행한 직후에 "call test.bat" 한번 해주면 (드디어...;; ) 디렉터리 이름을 환경 변수로 얻을 수 있게 되는군요. vscript에서 파일 기록하는 간단한 예제는 msdn을...

schiz21c의 이미지

많은 분들의 정성어린 답변 감사 드립니다..간단히 해결될 문제라고

많은 분들의 정성어린 답변 감사 드립니다..

간단히 해결될 문제라고 생각했었는데,

script 관련지식이 많이 요구 되네요..^^

perl, python, window scripting 까지.. 많은것들을 볼수 있었네요.

wariua님이 알려주신대로 하니 제가 원했던 결과를 얻을수 있었습니다.

시간나면 temp file을 안만들고 좀더 깔끔히 되는 방법을 더 찾아봐야 겠습니다..^-^

lifthrasiir의 이미지

Re: 배치파일에서 날짜와 시간으로 디렉토리를 생성하는 방법?

schiz21c 씀:
안녕하세요..

windows의 batch파일에서

날짜와 시간이 들어가게 디렉토리 이름을 만들고 싶은데..

시간에 콜론이 들어가서 만들수가 없네요..

md %date%

이렇게 하면 날짜로된 디렉토리는 만들수가 있는데

md %date%%time%

으로 하면 time에 ":" 이 들어가 있어서 디렉토리를 만들수가 없네요

배치파일 작성으로 이렇게 날짜, 시간이 들어간 디렉토리를 만들수 있을까요? (예: "2005-10-11_1259")

perl을 사용하면 될거도 같은데.. perl에는 문외한이라 -_-;;

고수님들의 답변 기다리겠습니다..

아마 윈도우 NT 계열에서는 다음과 같이 할 수 있을 것입니다. (XP에서 되는 걸 확인했습니다) 20051012_0735 같은 디렉토리를 만들어 줍니다.

@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%
; 이제 두 변수를 이어 붙여서 디렉토리를 만들면 땡!
mkdir %date2%_%time3%
endlocal
echo on

배치 파일은 의외로 강력한 도구입니다. :)

- 토끼군

schiz21c의 이미지

오옷~!배치파일에서 환경변수의 substring, replace등

오옷~!

배치파일에서 환경변수의 substring, replace등이 가능하군요..

역시 KLDP에는 많은 고수님들이 존재하시는군요...^^

좋은 정보 감사드립니다~~

댓글 보기 옵션

원하시는 댓글 전시 방법을 선택한 다음 "설정 저장"을 누르셔서 적용하십시오.