Share via


Move – úloha

Přesune soubory do nového umístění.

Parametry

Následující tabulka popisuje parametry Move úlohy.

Parametr Popis
DestinationFiles Volitelný ITaskItem[] výstupní parametr.

Určuje seznam souborů, do které se mají přesunout zdrojové soubory. Očekává se, že tento seznam bude mapování 1:1 na seznam zadaný v parametru SourceFiles . To znamená, že první soubor zadaný v SourceFiles se přesune do prvního umístění zadaného v DestinationFilesa tak dále.
DestinationFolder Volitelný ITaskItem parametr.

Určuje adresář, do kterého chcete přesunout soubory.
MovedFiles Volitelný ITaskItem[] výstupní parametr.

Obsahuje položky, které byly úspěšně přesunuty.
OverwriteReadOnlyFiles Volitelný Boolean parametr.

Pokud truepřepíše soubory, i když jsou označené jako soubory jen pro čtení.
SourceFiles Požadovaný parametr ITaskItem[].

Určuje soubory, které se mají přesunout.

Poznámky

DestinationFolder Parametr nebo DestinationFiles parametr musí být zadán, ale ne oba. Jsou-li zadány oba parametry, úloha se nezdaří a je zaznamenána chyba.

Úkol Move vytvoří složky podle potřeby pro požadované cílové soubory.

Kromě parametrů, které jsou uvedeny v tabulce, tento úkol dědí parametry z TaskExtension třídy, která sama dědí z Task třídy. Seznam těchto dalších parametrů a jejich popisů naleznete v tématu TaskExtension základní třída.

Příklady

Následující příklad přesune soubory ze zdrojové složky do složky dest. Zdrojové a dest složky jsou relativní vzhledem k souboru projektu. Pokud dest neexistuje, vytvoří se.

<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>

Následující příklad přejmenuje soubory podle vzoru nahrazení. Předpokládá se, že soubory jako files\original1.txt a files\original2.txt existují a original.txt existují na úrovni projektu před spuštěním. Všimněte si použití funkce Replace položky řetězce k úpravě názvů souborů. Viz Funkce položky.

<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>

Následující příklady přejmenovávají všechny soubory v úplném podstromu, který obsahuje hledaný text a náhradní text ve vlastnostech NÁSTROJE MSBuild. Zobrazuje použití funkce Replace vlastnosti řetězce k úpravě názvu souboru. Ukazuje také použití OverwriteReadOnlyFiles možnosti.

<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>

Může být užitečné použít metadata položek k vytvoření seznamu cílových souborů. Zde jsou dobře známá metadata %(RelativeDir) položky a %(Filename) jsou odkazovány na vytvoření upravených názvů souborů, v tomto případě změnit přípony pro jakýkoli soubor v podstromu s příponou .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>

Viz také