Share via


Move (tarea)

Mueve los archivos a una nueva ubicación.

Parámetros

En la siguiente tabla se describen los parámetros de la tarea Move .

Parámetro Descripción
DestinationFiles Parámetro de salida ITaskItem[] opcional.

Especifica la lista de archivos en la que se moverán los archivos de código fuente. Se espera que esta lista sea una asignación unívoca a la lista especificada en el parámetro SourceFiles. Es decir, el primer archivo especificado en SourceFiles se moverá a la primera ubicación especificada en DestinationFiles, etc.
DestinationFolder Parámetro ITaskItem opcional.

Especifica el directorio en el que se desea mover los archivos.
MovedFiles Parámetro de salida ITaskItem[] opcional.

Contiene los elementos que se movieron correctamente.
OverwriteReadOnlyFiles Parámetro Boolean opcional.

Si true, se sobrescriben los archivos aunque estén marcados como archivos de solo lectura.
SourceFiles Parámetro ITaskItem[] requerido.

Especifica los archivos que se van a mover.

Comentarios

Se debe especificar el parámetro DestinationFolder o DestinationFiles, pero no ambos. Si se especifican los dos, la tarea produce un error y se registra un error.

La tarea Move crea carpetas según sea necesario para los archivos de destino deseados.

Además de tener los parámetros que se enumeran en la tabla, esta tarea hereda los parámetros de la clase TaskExtension, que a su vez hereda de la clase Task. Para obtener una lista de estos parámetros adicionales y sus descripciones, consulte TaskExtension base class.

Ejemplos

En el ejemplo siguiente se mueven los archivos de la carpeta source a la carpeta dest. Las carpetas source y dest tienen relación con el archivo del proyecto. Si dest no existe, se crea.

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

En el ejemplo siguiente se cambia el nombre de los archivos según un patrón de reemplazo. Se supone que existen archivos como files\original1.txt y files\original2.txt, y que original.txt existe en el nivel de proyecto anterior a la ejecución. Tenga en cuenta el uso de la función Replace de elemento de cadena para modificar los nombres de archivo. Vea funciones de elemento.

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

En los ejemplos siguientes se cambia el nombre de todos los archivos de un subárbol completo que contienen el texto de búsqueda y el texto de reemplazo en las propiedades de MSBuild. Se muestra el uso de la función Replace de propiedad de cadena para modificar el nombre de archivo. También se muestra el uso de la opción 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>

Es posible que le resulte útil usar metadatos de elementos para construir la lista de archivos de destino. Aquí, se hace referencia a los metadatos de elemento conocidos %(RelativeDir) y %(Filename) para construir los nombres de archivo modificados, en este caso a fin de cambiar las extensiones de cualquier archivo de un subárbol con la extensión .txt a .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>

Vea también