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 DestinationFiles pliku 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 true program 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>