Move 工作

將檔案移到新位置。

參數

下表說明 Move 工作的參數。

參數 描述
DestinationFiles 選擇性的 ITaskItem[] 輸出參數。

指定要將來源檔案移動到其中的檔案清單。 這份清單預期會是一對一對應 SourceFiles 參數中指定的清單。 亦即,SourceFiles 中指定的第一個檔案會移動到 DestinationFiles 中指定的第一個位置,依此類推。
DestinationFolder 選擇性的 ITaskItem 參數。

指定要將檔案移動至其中的目錄。
MovedFiles 選擇性的 ITaskItem[] 輸出參數。

包含已成功移動的項目。
OverwriteReadOnlyFiles 選擇性的 Boolean 參數。

如果為 true,即使已標示為唯讀檔案,還是會覆寫這些檔案。
SourceFiles 必要的 ITaskItem[] 參數。

指定要移動的檔案。

備註

您必須指定 DestinationFolderDestinationFiles 參數,但不能同時指定這兩者。 如果同時指定這兩者,工作即會失敗,並記錄錯誤。

Move 工作會針對所需的目的地檔案建立所需的資料夾。

除了具有表格中所列的參數之外,此工作也繼承 TaskExtension 類別的參數,而該類別本身又繼承 Task 類別。 如需這些其他參數的清單及其描述,請參閱 TaskExtension 基底類別

範例

下列範例會將檔案從 source 資料夾移至 dest 資料夾。 sourcedest 資料夾相對於專案檔。 如果 dest 不存在,則會建立它。

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

下列範例會根據取代模式重新命名檔案。 它會假設檔案如 files\original1.txtfiles\original2.txt 存在,而且在執行前 original.txt 存在於專案層級。 請注意,使用字串項目函式 Replace 來修改檔案名稱。 請參閱項目函式

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

下列範例會重新命名完整子樹中的所有檔案,其中包含 MSBuild 屬性中的搜尋文字和取代文字。 它會顯示使用字串屬性函式 Replace 來修改檔案名稱。 它也示範如何使用 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>

您可能會發現使用項目中繼資料來建構目的地檔案清單會很有用。 在這裡,會參考已知的項目中繼資料 %(RelativeDir)%(Filename) 來建構修改的檔案名稱,在此情況下,將副檔名 .txt 子樹中任何檔案的副檔名變更為 .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>

另請參閱