Move (tâche)
Déplace les fichiers vers un nouvel emplacement.
Paramètres
Le tableau ci-dessous décrit les paramètres de la tâche Move .
Paramètre | Description |
---|---|
DestinationFiles |
Paramètre de sortie ITaskItem[] facultatif.Spécifie la liste de fichiers vers laquelle déplacer les fichiers sources. Cette liste est censée représenter un mappage un-à-un à la liste spécifiée dans le paramètre SourceFiles . Autrement dit, le premier fichier spécifié dans SourceFiles est déplacé au premier emplacement indiqué dans DestinationFiles , et ainsi de suite. |
DestinationFolder |
Paramètre ITaskItem facultatif. Indique le répertoire dans lequel vous souhaitez déplacer les fichiers. |
MovedFiles |
Paramètre de sortie ITaskItem[] facultatif.Contient les éléments qui ont été déplacés avec succès. |
OverwriteReadOnlyFiles |
Paramètre Boolean facultatif.Si la valeur est true , remplace les fichiers même s’ils sont marqués comme fichiers en lecture seule. |
SourceFiles |
Paramètre ITaskItem[] obligatoire.Spécifie les fichiers à déplacer. |
Remarques
Le paramètre DestinationFolder
ou le paramètre DestinationFiles
doit être spécifié, mais pas les deux. Si les deux paramètres sont spécifiés, la tâche échoue, et une erreur est enregistrée.
La tâche Move
crée des dossiers pour les fichiers de destination souhaités, en fonction des besoins.
En plus des paramètres répertoriés dans le tableau, cette tâche comprend des paramètres qu’elle hérite de la classe TaskExtension, qui elle-même hérite de la classe Task. Pour obtenir la liste de ces paramètres supplémentaires et leurs descriptions, consultez Classe de base TaskExtension.
Exemples
L’exemple suivant déplace des fichiers du dossier source vers le dossier dest. Les dossiers source et dest sont relatifs au fichier projet. Si dest n’existe pas, il est créé.
<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>
L’exemple suivant renomme les fichiers selon un modèle de remplacement. Il suppose que des fichiers comme files\original1.txt et files\original2.txt existent et que le fichier original.txt existe au niveau du projet avant l’exécution. Notez l’utilisation de la fonction Replace
d’élément de chaîne pour modifier les noms de fichiers. Voir Fonctions d’élément.
<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>
Les exemples suivants renomment tous les fichiers d’une sous-arborescence complète qui contiennent le texte de recherche et le texte de remplacement dans les propriétés MSBuild. L’exemple montre l’utilisation de la fonction Replace
de propriété de chaîne pour modifier le nom de fichier. Il illustre également l’utilisation de l’option OverwriteReadOnlyFiles
.
<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>
Il peut s’avérer utile d’utiliser les métadonnées d’élément pour construire la liste des fichiers de destination. Ici, les métadonnées d’éléments connus %(RelativeDir)
et %(Filename)
sont référencés pour construire les noms de fichiers modifiés, dans ce cas pour modifier les extensions de tout fichier dans une sous-arborescence avec l’extension .txt
en .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>