Freigeben über


Move-Aufgabe

Verschiebt Dateien in einen neuen Speicherort.

Parameter

In der folgenden Tabelle werden die Parameter der Move -Aufgabe beschrieben.

Parameter Beschreibung
DestinationFiles Optionaler ITaskItem[] -Ausgabeparameter.

Gibt die Liste der Dateien an, in die die Quelldateien verschoben werden sollen. Diese Liste sollte eine Eins-zu-Eins-Zuordnung zu der Liste sein, die im SourceFiles-Parameter angegeben ist. Das heißt, die erste in SourceFiles angegebene Datei wird in den ersten in DestinationFiles angegebenen Speicherort verschoben usw.
DestinationFolder Optionaler ITaskItem-Parameter.

Gibt das Verzeichnis an, in das die Dateien verschoben werden sollen.
MovedFiles Optionaler ITaskItem[] -Ausgabeparameter.

Enthält die Elemente, die erfolgreich verschoben wurden.
OverwriteReadOnlyFiles Optionaler Boolean-Parameter.

Wenn true, werden Dateien überschrieben, auch wenn diese als schreibgeschützt gekennzeichnet sind.
SourceFiles Erforderlicher ITaskItem[]-Parameter.

Gibt die zu verschiebenden Dateien an.

Hinweise

Es muss entweder der DestinationFolder-Parameter oder der DestinationFiles-Parameter angegeben werden, jedoch nicht beide. Wenn beide angegeben werden, schlägt der Task fehl, und ein Fehler wird protokolliert.

Der Move-Task erstellt Ordner, die für die gewünschten Zieldateien benötigt werden.

Zusätzlich zu den in der Tabelle aufgeführten Parametern erbt dieser Task Parameter von der TaskExtension-Klasse, die selbst von der Task-Klasse erbt. Eine Liste mit diesen zusätzlichen Parametern und ihren Beschreibungen finden Sie unter TaskExtension-Basisklasse.

Beispiele

Im folgenden Beispiel werden Dateien aus dem Ordner source in den Ordner dest verschoben. Die Ordner source und dest werden relativ zur Projektdatei angegeben. Wenn dest nicht vorhanden ist, wird er erstellt.

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

Im folgenden Beispiel werden Dateien nach einem Ersetzungsmuster umbenannt. Es wird davon ausgegangen, dass Dateien wie files\original1.txt und files\original2.txt vorhanden sind und dass original.txt vor der Ausführung auf Projektebene vorhanden sind. Beachten Sie die Verwendung der Replace-Funktion für Zeichenfolgenelemente zum Ändern der Dateinamen. Weitere Informationen finden Sie unter Elementfunktionen.

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

In den folgenden Beispielen werden alle Dateien in einer vollständigen Unterstruktur umbenannt, die den Suchtext und den Ersetzungstext in den MSBuild-Eigenschaften enthalten. Damit wird die Verwendung der Replace-Funktion für Zeichenfolgeneigenschaften zum Ändern von Dateinamen veranschaulicht. Außerdem wird die Verwendung der OverwriteReadOnlyFiles-Option gezeigt.

<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öglicherweise ist es hilfreich, Elementmetadaten zum Erstellen der Zieldateiliste zu verwenden. Hier wird auf die bekannten Elementmetadaten %(RelativeDir) und %(Filename) verwiesen, um die geänderten Dateinamen zu erstellen. In diesem Fall werden die Erweiterungen aller Dateien in einer Unterstruktur mit der Erweiterung .txt in .orig geändert.

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

Weitere Informationen