2013-10-31 3 views
12

우리는 폴더의 백업을 생성하고 마지막에 & 시간을 추가하는 간단한 배치 파일을 가지고 있습니다.현재 날짜와 시간을 기반으로 폴더를 만드는 일괄 파일

점진적으로 사용하고 "데이터 28-04-13"과 같은 폴더를 출력합니다.

끝까지 시간을 추가하고 싶지만 내 코드는 HH : MM으로 시간을 출력하지만 콜론 (:)이 포함 된 폴더 이름에는 유효하지 않습니다.

내 코드를 수정하여 :를 제거하거나 "."로 교체하십시오.

set CurrentDate=%DateDay%-%DateMonth%-%DateYear%-%time:~0,2%.%time:~3,2% 

"31-10-13-11.35"

를 출력합니다

이 나를 위해 가장 쉬운 방법이었다

@echo off & for /F "tokens=1-4 delims=/ " %%A in ('date/t') do (
set DateDay=%%A 
set DateMonth=%%B 
set DateYear=%%C 
) 

@echo off & for /F "tokens=1-4 delims=/ " %%D in ('time/t') do (
set DateTime=%%D 
) 

set CurrentDate=%DateDay%-%DateMonth%-%DateYear%-%DateTime% 

md "F:\MobilePC\data %CurrentDate" 

그래서 내 자신의 질문

을 답변 감사합니다

+0

가 % 날짜 %의 기본 배치 변수를 사용 그것을 할 % 시간 %? –

+0

볼 수 있듯이 % time %은 콜론을 포함하여 폴더 이름에 유효하지 않은 다음 HH : MM 시간을 출력합니다. – TheNineteenNineties

+0

'time' 변수는 AM에서 차지해야하는 공백을 포함합니다. 아래의 'WMIC'을 사용하면 XP Pro 이상의 문제를 해결할 수 있습니다. % DateMonth % - - % DateYear % -. % 날짜 시간 % 설정하는 currentDate = % CurrentDateUnedited % 에코 %하는 currentDate % – foxidrive

답변

1

http://www.dostips.com/DtTipsStringManipulation.php

"하위 문자열 바꾸기"를 검색하십시오.

+0

덕분에, 나는이 문제를 해결하려고 노력하고 있어요 그래서, 나는 다음과 같은 세트 CurrentDateUnedited = % DateDay %를 행한 set str = % str :: = % echo.% CurrentDate % 하지만 콜론이므로 코드를 구문 분석하는 방법을 모르겠습니다. – TheNineteenNineties

+0

'echo % CurrentDate %'대신 끝에'echo % str %'가 필요하다고 생각합니다. 또한 @SamN이 말했듯이'% time % '에 내장 된 것을 사용할 수 있습니다. –

6
rem replace : with . 
set myTime=%time::=.% 

rem remove cents of second 
set myTime=%myTime:~0,-3% 
15

이 코드의 처음 네 줄은 XP Pro 이상의 신뢰할 수있는 YY DD MM YYYY HH Min Sec 변수를 제공합니다.

내장 된 cmd 날짜 및 시간 변수는 사용자가 구성 할 수 있으므로 일반 배치 파일에 대해서는 신뢰할 수 없습니다.

@echo off 
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" 
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%" 
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%" 

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%" 
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%" 
echo datestamp: "%datestamp%" 
echo timestamp: "%timestamp%" 
echo fullstamp: "%fullstamp%" 
pause 
0
setlocal 
    set "time=%time::=%" 
    rem check that date has/delimeter if not replace it for valid 
    md %date:/=%_%time:~0,-3% 
endlocal 
5

이 작업을 수행하여 현재 날짜와 시간을 설정할 수 있습니다. 배치 파일에서 매일 사용하고 있습니다.

%date:~10%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2% 

OUPUT :

201509141639 (14th sept 2015 04:39 PM) 
+1

제공하는 솔루션에 대한 설명을 추가하여 답을 더 자세히 설명해 주시겠습니까? – abarisone

+0

@abarisone : 이 예에서 YYYYMMDDHHMM 형식으로 날짜를 구분합니다.
아래와 같이 복사 된 파일 목록을 생성하는 데 사용하고 있습니다.
xcopy/e/y 업로드 C : \ Archive >> C : \ Result \ % date : ~ 10 %% date : ~ 4,2 %% date : ~ 7,2 %% time : ~ 0 , 2 %% 시간 : ~ 3,2 % .txt 복사 된 파일 이름으로 텍스트 파일을 만듭니다. –

-1

현재 날짜 & 시간과 사본의 전체 내용과라는 이름의 폴더를 생성합니다이 코드 :에 "2016년 8월 10일 17 23"D \ 탈리 데이터를 " " 폴더.

그것은 컴퓨터의 D 드라이브에 "탈리 데이터"라는 이름의 폴더가 필요합니다. (텍스트 문서에 코드 아래에 복사하여 DOS의 배치 파일로 저장)

for /f "tokens=1* delims=" %%a in ('date /T') do set datestr=%%a 

set time=%TIME:~0,2%" "%TIME:~3,2% 

mkdir C:\%date:/=%" "%time%\Backup 

xcopy "D:\Tally Data" C:\%date:/=%" "%time%\Backup /E /S /Q /Y 
+0

답변을 풀 핏으로 쓰지 마십시오. – Matt

관련 문제