2016-12-19 6 views
3

Batchfiles에 대한 경험이 거의없고 스크립팅 및 일반적으로 "코딩"을 수행함에 따라 만들려는 배치와 관련된 문제가 발생했습니다. 내가 자동으로 삽입이 .txt 파일을 *하는 폴더를 가지고Filename + Robocopy 로깅에 현재 날짜가있는 파일 만들기

을, 나는 파일이 가지고있는 이름에 따라 서로 다른 폴더에이 파일을 이동하고 싶었 다음과 같이

상황이다. Robocopy로이 작업을 수행했으며 정상적으로 작동합니다. 그런 다음 Robocopy가 수행하는 작업을 기록 할 수있는 가능성을 발견했습니다. 배치는 현재 다음과 같습니다

robocopy C:\Source C:\Target_Normal file*.txt /xf file022*.txt /mov /log+:LogNo.txt /ns /nc /np /r:1 /w:5 
robocopy C:\Source C:\Target_Special file022*.txt /mov /log+:LogNo.txt /ns /nc /np /r:1 /w:3 

이 배치 분마다 실행할 수있는 Windows 예약 된 작업의 일부가되고있다. 이동해야 할 파일이 많기 때문에 로그 파일은 곧 매우 팽창합니다. 이제는 매일 같은 로그 파일이 필요합니다. 동일한 일괄 처리는 새 일에 처음 실행될 때 자동으로 만들어집니다. 물론 새로 생성 된 로그 파일의 이름에 생성 된 날짜가 포함되어 있으면 완벽 할 것입니다. 이 모든 것을 robocopy 라인 위에 놓고 싶습니다. 의사, 나는 이런 식으로 뭔가를 싶습니다

If currentDay has no Logfile yet -> 
    Create Logfile with Name Log+currentDate -> 
else (nothing and continue?) 

을 ... 그 어떤 의미가 있다면. 나는 그걸 일괄 적으로 표현하는 방법을 모른다.

+0

Robocopy는 로그가 없으면 기본 형식으로 날짜를 조합하여 var에 넣습니다. – LotPings

+1

[파일 이름에 사용하기에 적합한 형식으로 Windows 명령 줄에서 현재 날짜를 얻는 방법을 살펴보십시오.] (http://stackoverflow.com/questions/203090/) 다른 힌트 : 스택 오버플로 검색을 검색어'[배치 파일] 날짜 시간 파일 이름'. 또한 [일주일 후에 로그 파일을 삭제하는 방법?] (http://stackoverflow.com/a/38998531/3074564)에 대한 답변도 참조하십시오. 로그 파일의 크기가 아니라 로그 파일의 크기에 초점을 맞추는 것이 훨씬 좋습니다. 사용 가능한 저장 매체 크기는 실제 제한 요소이며 파일의 경과 시간이 아닙니다. – Mofi

답변

1

이 배치는 wmi로 실제 날짜를 얻는 방법을 보여 주며 ISO 날짜 시간을 원하는대로 조합 할 수있는 부분으로 나눕니다.

@Echo off 
SetLocal EnableExtensions EnableDelayedExpansion 
:: Get Local date time 
for /f "tokens=1-3 delims=.+-" %%A in (
    'wmic os get LocalDateTime^|findstr ^^[0-9]' 
    ) do Set _DT=%%A 
Set "_yy=%_DT:~0,4%" & Set "_MM=%_DT:~4,2%" & Set "_dd=%_DT:~6,2%" 
Set "_hh=%_DT:~8,2%" & Set "_nn=%_DT:~10,2%" & Set "_ss=%_DT:~12,2%" 
:: Put your date time elements together 
::   %_DT:~0,8% is yyyyMMdd 
Set LogNo=Log_%_DT:~0,8%.txt 
set _ 

Echo Logfile is : %LogNo% 
Pause 

robocopy C:\Source C:\Target_Normal file*.txt /xf file022*.txt /mov /log+:%LogNo% /ns /nc /np /r:1 /w:5 
robocopy C:\Source C:\Target_Special    file022*.txt /mov /log+:%LogNo% /ns /nc /np /r:1 /w:3 
+0

정확히 내가 무엇을 찾고 있었는지, 이것은 완벽하게 작동합니다. 대단히 감사합니다! –