Udostępnij za pośrednictwem


Move — Zadanie

Przenosi pliki do nowej lokalizacji.

Parametry

W poniższej tabeli opisano parametry Move zadania.

Parametr Opis
DestinationFiles Opcjonalny ITaskItem[] parametr wyjściowy.

Określa listę plików, do których mają być przenoszone pliki źródłowe. Ta lista powinna być mapowaniem "jeden do jednego" do listy określonej w parametrze SourceFiles . Oznacza to, że pierwszy plik określony w SourceFiles pliku zostanie przeniesiony do pierwszej lokalizacji określonej w DestinationFilespliku i tak dalej.
DestinationFolder Opcjonalny ITaskItem parametr.

Określa katalog, do którego chcesz przenieść pliki.
MovedFiles Opcjonalny ITaskItem[] parametr wyjściowy.

Zawiera elementy, które zostały pomyślnie przeniesione.
OverwriteReadOnlyFiles Opcjonalny Boolean parametr.

Jeśli trueprogram zastępuje pliki, nawet jeśli są one oznaczone jako pliki tylko do odczytu.
SourceFiles Wymagany parametr interfejsu ITaskItem[].

Określa pliki do przeniesienia.

Uwagi

DestinationFolder Należy określić parametr lub DestinationFiles parametr, ale nie oba. W razie podania obu parametrów zadanie nie powiedzie się i zostanie zarejestrowany błąd.

Zadanie Move tworzy foldery zgodnie z wymaganiami dla żądanych plików docelowych.

Oprócz parametrów wymienionych w tabeli to zadanie dziedziczy parametry z TaskExtension klasy, która sama dziedziczy po Task klasie. Aby uzyskać listę tych dodatkowych parametrów i ich opisy, zobacz TaskExtension, klasa bazowa.

Przykłady

Poniższy przykład przenosi pliki z folderu źródłowego do folderu dest. Foldery źródłowe i dest są powiązane z plikiem projektu. Jeśli dest nie istnieje, zostanie utworzony.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <FilesToMove Include="source\*.*"/>
  </ItemGroup>

  <Target Name="MoveFiles" AfterTargets="Build">
     <Message Text="Moving Files @(FilesToMove)"/>
     <Move SourceFiles="@(FilesToMove)" DestinationFolder="dest">
       <Output 
          TaskParameter="DestinationFiles"
          ItemName="FilesWritten"/>
     </Move>
     <Message Text="@(FilesWritten)"/>
  </Target>
</Project>

Poniższy przykład zmienia nazwy plików zgodnie ze wzorcem zastępczym. Przyjęto założenie, że pliki, takie jak files\original1.txt i files\original2.txt istnieją, a plik original.txt istnieje na poziomie projektu przed wykonaniem. Zwróć uwagę na użycie funkcji Replace elementu ciągu w celu zmodyfikowania nazw plików. Zobacz Funkcje elementu.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <ItemGroup>
    <FilesToRename Include="files\original*" />    
  </ItemGroup>

  <Target Name="MoveFiles" AfterTargets="Build">
    <Message Text="Rename one file"/>
    <Move SourceFiles="original.txt" DestinationFiles="new.txt"/>
    <Message Text="Renaming files @(FilesToRename)"/>
    <Move SourceFiles="@(FilesToRename)" DestinationFiles="@(FilesToRename->Replace('original', 'new'))" />
  </Target>

</Project>

W poniższych przykładach zmieniono nazwy wszystkich plików w pełnym poddrzewie zawierającym tekst wyszukiwania i tekst zastępczy we właściwościach programu MSBuild. Przedstawia użycie funkcji Replace właściwości string w celu zmodyfikowania nazwy pliku. Demonstruje również użycie OverwriteReadOnlyFiles opcji.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
    <SearchText>original</SearchText>
    <ReplaceText>new</ReplaceText>
  </PropertyGroup>

  <ItemGroup>
    <FilesToRename Include="files\**\*$(SearchText)*" />    
  </ItemGroup>

  <Target Name="MoveFiles" AfterTargets="Build">
    <Message Text="Renaming files @(FilesToRename)"/>
    <Move SourceFiles="@(FilesToRename)"
          OverwriteReadOnlyFiles="true"
          DestinationFiles="@(FilesToRename->Replace($(SearchText), $(ReplaceText)))" />
  </Target>

</Project>

Przydatne może być użycie metadanych elementu do konstruowania listy plików docelowych. W tym przypadku dobrze znane metadane %(RelativeDir) elementu i %(Filename) są przywoływane do konstruowania zmodyfikowanych nazw plików, w tym przypadku w celu zmiany rozszerzeń dla dowolnego pliku w poddrzewie z rozszerzeniem .txt na .orig.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
    <NewExtension>orig</NewExtension>
  </PropertyGroup>

  <ItemGroup>
    <FilesToRename Include="files\**\*.txt" />
    <RenamedFiles Include="@(FilesToRename -> '%(RelativeDir)%(Filename).$(NewExtension)')" />    
  </ItemGroup>

  <Target Name="MoveFiles" AfterTargets="Build">
    <Message Text="Renaming files @(FilesToRename) to @(RenamedFiles)"/>
    <Move SourceFiles="@(FilesToRename)"
          OverwriteReadOnlyFiles="true"
          DestinationFiles="@(RenamedFiles)" />
  </Target>

</Project>

Zobacz też