다음을 통해 공유


Move 작업

새 위치로 파일을 이동합니다.

매개 변수

다음 표에서는 Move 작업의 매개 변수에 대해 설명합니다.

매개 변수 Description
DestinationFiles 선택적 ITaskItem[] 출력 매개 변수입니다.

소스 파일을 이동할 파일의 목록을 지정합니다. 이 목록은 SourceFiles 매개 변수에 지정된 목록에 대한 일대일 매핑이어야 합니다. 즉, SourceFiles에 지정된 첫 번째 파일이 DestinationFiles 등에 지정된 첫 번째 위치에 이동됩니다.
DestinationFolder 선택적 ITaskItem 매개 변수입니다.

파일을 이동하려는 디렉터리를 지정합니다.
MovedFiles 선택적 ITaskItem[] 출력 매개 변수입니다.

성공적으로 이동된 항목을 계산합니다.
OverwriteReadOnlyFiles 선택적 Boolean 매개 변수입니다.

true인 경우 파일이 읽기 전용으로 표시되더라도 파일을 덮어씁니다.
SourceFiles 필수 ITaskItem[] 매개 변수입니다.

이동할 파일을 지정합니다.

설명

DestinationFolder 매개 변수 또는 DestinationFiles 매개 변수 중 하나(둘 다가 아닌)를 지정해야 합니다. 둘 다를 지정하는 경우 작업이 실패하고 오류가 기록됩니다.

Move 작업은 원하는 대상 파일의 필요에 따라 폴더를 만듭니다.

이 작업은 표에 나열된 매개 변수 외에, Task 클래스에서 직접 상속하는 TaskExtension 클래스의 매개 변수도 상속합니다. 이러한 추가 매개 변수 및 해당 설명이 포함된 목록은 TaskExtension 기본 클래스를 참조하세요.

예제

다음 예제에서는 원본 폴더에서 dest 폴더로 파일을 이동합니다. 원본디스트 폴더는 프로젝트 파일을 기준으로 합니다. 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>

항목 메타데이터를 사용하여 대상 파일 목록을 생성하는 것이 유용할 수 있습니다. 여기서는 확장명이 .txt인 하위 트리의 모든 파일에 대한 확장명을 .orig로 바꾸기 위해 잘 알려진 항목 메타데이터 %(RelativeDir)%(Filename)가 수정된 파일 이름을 생성하도록 참조됩니다.

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

참고 항목