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 DestinationFiles a 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 true př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>