2011-05-11 5 views
3

DOS 배치 파일을 Ant로 변환합니다. 배치 파일의 끝에서 DOS dir 명령을 사용하여 크기, 날짜 및 시간을 포함하여 복사 된 파일 목록을 인쇄합니다. 앤트 스크립트의 끝에서 똑같이하고 싶습니다. 지금까지 내가 가지고있는 것 :크기, 날짜 및 시간으로 파일 세트의 각 파일을 반향합니다.

<!-- LIST COPIED FILES --> 
<target name="summary" depends="backup"> 
    <fileset id="zipfiles" dir="${dest}" casesensitive="yes"> 
     <include name="*.zip"/> 
    </fileset> 

    <property name="prop.zipfiles" refid="zipfiles"/> 
    <echo>${prop.zipfiles}</echo>  
</target> 

각 파일을 크기, 날짜 및 시간을 사용하여 별도의 줄에 인쇄하려면 어떻게해야합니까?

답변

3

Ant Flaka이라는 외부 Tasksuite를 기반으로하는 솔루션이 있습니다. Ant Flaka를 사용하면 파일 세트에서 기본 fileobjects 및 해당 속성 (name, mtime, size ..)에 액세스 할 수 있습니다. 를 통해 외부 프로세스를 열 필요가/cmd를

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka"> 
    <fl:install-property-handler /> 

    <!-- as fileset has no absolute pathnames we need 
     path combined with pathconvert --> 
    <path id="foobar"> 
     <fileset dir="/home/gilreb/Downloads"> 
      <include name="*.zip"/> 
     </fileset> 
    </path> 

    <pathconvert property="zipfiles" refid="foobar"/> 

    <!-- iterate over the listentries, get access to 
     the underlying fileobject and echo its properties --> 
    <fl:for var="f" in="split('${zipfiles}', ':')"> 
     <echo> 
     #{ format('filename %s, last modified %tD, size %s bytes', f.tofile.toabs,f.tofile.mtime,f.tofile.size) } 
    </echo> 
    </fl:for> 

</project> 

출력 =

... 
    [echo]  filename /some/path/apache-ant-1.8.2-bin.zip, last modified 03/16/11, size 10920710 bytes 
    [echo]  
    [echo]  filename /some/path/apache-ant-1.8.2-src.zip, last modified 03/16/11, size 8803388 bytes 
    [echo]  
    [echo]  filename /some/path/apache-ant-antunit-1.1-bin.zip, last modified 04/17/11, size 70477 bytes 
... 
+0

고마워요! 나는 항아리에 들어가서 EL에 약간의 개조를했고 그것은 단지 효과가있었습니다. Flaka는 Ant에 많이 추가되었습니다. –

2

핵심 Ant 태스크에서 사용 가능한 것으로 생각하지 않습니다.

이렇게하려면 사용자 지정 작업을 작성할 수 있습니다.

또는 작업을 사용하여 파일 세트의 각 파일에 대해 dir과 같은 시스템 명령을 실행할 수 있습니다. 예를 들어 :

<apply executable="cmd" osfamily="windows"> 
<arg value="/c"/> 
<arg value="dir"/> 
<fileset dir="."> 
    <include name="*.zip"/> 
</fileset> 
</apply> 

아래에 귀하의 의견에 따라, 당신은 Uptodate 작업을 사용하여 모든 zip 파일이 (당신이 참아 생성하기 전에 만들 수) 일부 대상 파일보다 최신했다 여부를 확인할 수 있습니다.

+1

나는 그런 외부 작업이 밖에 이미 아니라고 놀랍군요 적용되지 않습니다. 분명히 나는 ​​이것을 처음으로 필요로하는 사람이 아니다 ...? –

+0

메신저를 쏘지 마십시오.) – sudocode

+0

Ant가 DOS 명령을 호출하도록 할 수 있습니다. 내 희망은 파일 날짜/시간을 Ant 속성으로 가져와 이전과 이후를 비교할 수 있었고 변경되지 않았다면 경고를 표시하는 것이 었습니다. –

관련 문제