일부 파일이 들어있는 디렉토리 소스가 있는데, 대상 폴더에 복사하고 싶습니다. 대상이 존재할 수 있으며 이미 파일이있을 수 있습니다. 소스 파일과 이름이 같은 파일은 덮어 써야합니다.
Powershell에서 이것을 실행하면 :
Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse
그런 다음 첫 번째 줄은 폴더를 만들어 폴더 .\Destination에 복사 .\Source합니다. 다음 번에 반복하고 싶습니다. 그러나 두 번째 줄 .\Source은 대신 새 .\Destination폴더에 복사 하고 (을 생성 .\Destination\Source) 세 번째 줄은 .\Destination\Source다시 덮어 씁니다 .
항상 첫 번째 경우처럼 작동하게하려면 어떻게해야합니까? 즉, .\Destination복사하는 대신 덮어 쓰시겠습니까?
답변
문제는
cp -r -fo foo bar
bar존재하지 않는 경우에만 작동 하고
cp -r -fo foo/* bar
bar존재하는 경우에만 작동 합니다. 따라서 문제를 해결하려면 bar먼저 작업을 수행하기 전에 존재 해야 합니다.
md -f bar
cp -r -fo foo/* bar
답변
“source”폴더의 내용 만 복사하려면
copy-item .\source\* .\destination -force -recurse
답변
Steven Penny의 답변 https://superuser.com/a/742719/126444 는 대상 디렉토리의 원본 내용을 삭제하지 않고 추가합니다. 대상 폴더를 소스의 내용으로 완전히 바꾸고 두 가지 기능을 만들어야했습니다.
function CopyToEmptyFolder($source, $target )
{
    DeleteIfExistsAndCreateEmptyFolder($target )
    Copy-Item $source\* $target -recurse -force
}
function DeleteIfExistsAndCreateEmptyFolder($dir )
{
    if ( Test-Path $dir ) {
    #http://stackoverflow.com/questions/7909167/how-to-quietly-remove-a-directory-with-content-in-powershell/9012108#9012108
           Get-ChildItem -Path  $dir -Force -Recurse | Remove-Item -force -recurse
           Remove-Item $dir -Force
    }
    New-Item -ItemType Directory -Force -Path $dir
}
답변
다음과 같은 디렉토리 구조를 가지고 있다고 가정 해 봅시다.
- 
뿌리
- folder_a
- a.txt
 - b.txt
 - c.txt
 
 - folder_b
- a.txt
 - b.txt
 
 
루트 폴더에서 다음 순서의 명령으로 원하는 결과를 얻을 수 있습니다.
$files = gci ./folder_b -name
cp ./folder_a/*.txt -Exclude $files ./folder_b - folder_a
 
c.txt 만 복사됩니다