Переименовать Vs Move Ant задача - PullRequest
2 голосов
/ 29 апреля 2011

На самом деле я использую <move> cmd для переименования одной папки вместо <rename> cmd. но в моем случае я перемещаю сюда 48746 файлов, поэтому занимает около 1 часа. Пожалуйста, скажите мне, как правильно переименовать эту папку оптимальным способом. Заранее спасибо.

<target name="rename_folder_jet" depends="Upload_on_ftp">
    <move todir="${build.dir}_jet_${ver_number}">
        <fileset dir="${build.dir}">
            <include name="**/*.*"/>
        </fileset>
    </move>
</target>

1 Ответ

7 голосов
/ 29 апреля 2011

Попробуйте переместить / переименовать только каталог, а не все его содержимое.Например:

<target name="rename_folder_jet" depends="Upload_on_ftp">
    <move file="${build.dir}" todir="${build.dir}_jet_${ver_number}"/>
</target>

И убедитесь, что целевой каталог не существует, прежде чем начать.

Я экспериментировал со следующим файлом сборки:

<project default="rename_folder_jet">
  <property name="build.dir" value="build"/>
  <property name="ver_number" value="0.3"/>

  <target name="setup">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.dir}/foo"/>
    <mkdir dir="${build.dir}/bar"/>
  </target>

  <target name="teardown">
    <delete dir="${build.dir}_jet_${ver_number}"/>
  </target>

  <target name="rename_folder_jet">
    <move file="${build.dir}" todir="${build.dir}_jet_${ver_number}"/>
  </target>
</project>

ВыполнениеAnt в отладке (ant -d) с вышеупомянутым интересен.

Случай 1:

ant teardown
ant setup
ant -d

В этом случае целевой каталог перемещения / переименования не существует.Выходные данные отладки Ant показывают:

 [move] Attempting to rename dir: C:\Users\sudocode\tmp\ant\build to C:\Users\sudocode\tmp\ant\build_jet_0.3\build

Случай 2:

ant setup
ant
ant setup
ant -d

В этом случае целевой каталог уже существует при втором выполнении.Выходные данные отладки Ant показывают:

     [move] Attempting to rename dir: C:\Users\sudocode\tmp\ant\build to C:\Users\sudocode\tmp\ant\build_jet_0.3\build
fileset: Setup scanner in dir C:\Users\sudocode\tmp\ant\build with patternSet{ includes: [] excludes: [] }
     [move] Deleting directory C:\Users\sudocode\tmp\ant\build\foo
     [move] Deleting directory C:\Users\sudocode\tmp\ant\build\bar
     [move] Deleting directory C:\Users\sudocode\tmp\ant\build

Таким образом, кажется, что если целевой каталог еще не существует, Ant выполнит переименование каталога.Но если целевой каталог существует, он вместо этого копирует в каталог и удаляет его из исходного каталога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...