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.txt 및 files\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>