2013-10-15 4 views
0

안녕하세요. C : \ temp \ 20120214.003_visual_sciences_web_feed.out.gz 파일에 로그 파일이 거의 없습니다. 이 로그 파일에 대해 생성 된 파일 이름은 생성 된 날의 YYYMMDD 형식에 따라 이름이 지정됩니다. 이제 아래 조건 1을 기준으로 로그 파일을 검색하는 배치 파일을 작성하고 "1-jan-2013 사이에 만든 파일 1-sep-2013 "을 참조하십시오.배치 파일의 파일 이름에 조건을 유지하는 데 도움이 필요합니다.

배치 파일 스크립팅을 처음 사용합니다. 파일 이름을 기반으로 모든 파일을 통해 루프를 생각하고 1-6에서 각 파일의 인덱스를 가져 와서 필터를 사용하여 날짜 조건을 확인하십시오 (BETWEEN date1과 date2를 사용) 이 방법에 대해 도움을 줄 수 있습니까? 간단한 방법이 사용 및 조건을 달성하거나 우리가 다른 방법을

감사

+0

난 당신이 (당신이 Y 누락) – dbenham

+0

네 죄송합니다 당신은 내가 C에 해당 파일을 복사하려고, 그것은 또한 일을 잘 – user2883028

답변

0

정확하게 당신이 원하는 것을 말할 힘든이 없습니다. 그러나 나는이 가까이 있어야 믿을 : 명령 프롬프트에서

(더 배치) : 일괄 스크립트 내에서

for /f "delims=" %F in ('dir /b "c:\temp\*.out.gz"') do @if "%F" geq "20130101" if "%F" lss "20130902" @echo %F 

:

for /f "delims=" %%F in ('dir /b "c:\temp\*.out.gz"') do if "%%F" geq "20130101" if "%%F" lss "20130902" echo %%F 

또는 잘 포맷 :

@echo off 
for /f "delims=" %%F in ('dir /b "c:\temp\*.out.gz"') do (
    if "%%F" geq "20130101" if "%%F" lss "20130902" echo %%F 
) 

위의 해결 방법에는 2013 년 1 월 1 일 이후의 파일이 포함됩니다. 해당 날짜를 포함시키지 않으려면 마지막 문자열을 ''20130901 ''로 변경하십시오.

IF는 날짜 비교 또는 숫자 비교가 아닌 문자열 비교를 수행한다는 점에 유의하십시오. 이것은 날짜 형식이 YYYYMMDD이기 때문에 작동합니다.

.out.gz 파일이 날짜로 시작되지 않으므로 무시해야하는 경우 FINDSTR 정규식을 추가하여 더 선택적으로 지정할 수 있습니다. 불행히도 FINDSTR 정규 표현식 지원은 매우 제한적입니다. [0-9]{8}과 같은 것을 지원하지 않습니다.

@echo off 
for /f "delims=" %%F in (
    'dir /b "c:\temp\*.out.gz"^|findstr "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.' 
) do if "%%F" geq "20130101" if "%%F" lss "20130902" echo %%F 
+0

감사하다 YYYYMMDD 형식 말을 의미 믿습니다 : \ temp4. 마찬가지로 비슷한 일치하는 파일을 c : \ temp2에서 c : \ temp4로 복사해야합니다. 아래와 같이 스크립트를 수정하지만 스크립트가 작동하지 않습니다. 제안하십시오 는 인터넷 사용 X를 @echo : \\ fwtgvs250win \ F $/사용자 : srvvsbatchfiles */F "delims의 ="에 대한 %% F ( 'DIR/B "C에서 : \ TEMP2 \ * _ 공급. out.gz "&&"c : \ temp3 \ * _ feed.out.gz "^ | findstr"^ [0-9] [0-9] [0-9] [0-9] [0-9] [0 "%% F"lss "20130902"에코 "%% F"geq "20130101" "c : \ temp4 \"를 복사 할 경우 "0-9"[0-9] [0-9] \. ' ) %% F Please Please – user2883028

+0

안녕하세요. – user2883028

관련 문제