2012-01-17 5 views
1

내가 olderfile에 수정 된 날짜보다 이전으로 이것이 controlfile을 반환해야DOS의 DIR/TW 스위치는

dir /b /tw /od controlfile olderfile | more +1 

사용하여 수정 타임 스탬프에 제어 파일과 파일의 목록을 비교하기 위해 노력하고있어 작동하지 controlfile. 그러나 생성 날짜 (olderfile의 생성 날짜가 controlfile 이후 임)와 비교하여 항상 olderfile을 반환합니다. /tw 스위치는 dir에 마지막으로 쓰여진 날짜 (dir /?)를 사용해야하므로/tw가 문서화 된대로 작동하려면 내가 잘못하고 있는지 잘 모르겠습니까? UPDATE :

는 지금은 controlfile에 하위 폴더 상대에 olderfile 있었다까지. olderfilecontrolfile과 같은 디렉토리에 복사했을 때 비교가 예상대로 작동했습니다. 즉, 위의 명령은 controlfile을 반환했습니다. 따라서 하위 폴더에있는 것은 분명히 하위 폴더 수정 날짜가 controlfile보다 이전 인 olderfile의 경우와 비슷하게 비교를 중단합니다.

그럼 내 질문에 어떻게 해결해야 합니까이 디렉토리 구조가 필요합니다 주어진 무엇입니까?

답변

1

먼저 코드가 실패하는 이유에 대한 설명.

/B 옵션없이 DIR을 보면 항상 파일 경로를 파일 이름과 함께 헤더 행으로 표시합니다. 같은 디렉토리에서 2 개의 파일 스펙과 함 2 정렬 옵션을 사용할 때, 명령은 파일을 정렬하고 동일한 디렉토리 헤더 아래에 표시 할 수 있습니다. 파일 이름이 반복 되더라도 헤더에서 어떤 파일이 참조되는지 정확히 알 수 있습니다.

그러나 두 파일 사양이 다른 경로에 있으면 파일 이름이 같고 경로 만 다를 가능성이 있습니다. 이 경우 각 파일 스펙이 자체 헤더로 정렬되지 않으면 정렬은 좋지 않습니다. 그렇지 않으면 어떤 파일인지 알 수 없습니다. 단일 파일을 정렬하는 것은별로 의미가 없지만 파일 사양에는 와일드 카드가 포함될 수 있으므로 의미가 있습니다. 따라서 정렬 옵션이 다른 경로를 사용하는 여러 파일 스펙과 결합 될 때마다 DIR은 각 경로마다 별도의 정렬을 수행하며 각 경로마다 고유 한 헤더가 있습니다.

/B 옵션을 추가하면 경로 헤더가 제거되지만 정렬 동작은 변경되지 않습니다! 당연히 어리석은 쓸모없는 디자인이지만, 그것이 당신이 얻는 것입니다.

고유 한 Windows 명령 만 사용하여 순수 배치를 사용하려는 경우 솔루션에 도달하는 것이 훨씬 더 문제가됩니다. 날짜 작업은 일괄 처리로 화를 낼 수 있습니다.

가장 편리한 배치 솔루션은 임시로 두 번째 파일을 상위 디렉토리로 복사하고 상위 디렉토리에서 비교 한 다음 임시 사본을 실행하는 것입니다. 그러나 파일 크기가 클 경우 문제가 될 수 있습니다. 또한 파일 이름이 상위 디렉토리에 존재하지 않는다고 가정합니다. 파일이 존재하거나 존재할 수도있는 경우 고유 한 것으로 알려진 다른 이름으로 파일을 복사 할 수 있습니다. 물론 결과를 번역해야합니다.

내가 말할 수있는 것부터 다른 배치 솔루션을 사용하려면 날짜와 시간을 분석해야합니다. 그러면 벌레가 생길 수 있습니다.

COPY 제안을 받아 들일 수없는 경우 (사용하지 않기로 결정한 경우) 나는 VBScript, Javascript 또는 Powershell 이외의 다른 배치를 사용하도록 권장합니다. 또는 일부 VBScript가 포함 된 일괄 처리와 같은 하이브리드 방식 일 수도 있습니다.

+0

답장을 읽기 전에 먼저 제어 파일을 대상 디렉토리 (첫 번째 파일을 하위 디렉토리로)에 복사하려고했습니다. 그런 다음 나중에 하위 디렉토리를 정리하십시오. 이것은 번역이 필요 없음을 의미합니다. 아니면 두 번째 파일을 복사한다고 말한 이유가 있습니까? – rutherford

+0

나는 어떤면에서 차이가 보이지 않는다. 제어 파일 이름이 서브 디렉토리에 이미 존재하면 여전히 문제점이 있습니다. 그러나 그것은 당신에게 해당하지 않는 것처럼 들립니다. – dbenham

관련 문제