PowerShell을 사용하여 파일이 없는 폴더, 폴더가 없는 파일 또는 모든 폴더 복사
폴더(또는 폴더 집합)를 사용하는 PowerShell 스크립트를 작성하고 폴더 구조(파일 없음)를 생성할 수 있는 폴더 구조(폴더 없음)를 생성할 수 있는 파일 구조(폴더 없음) 또는 파일(모두 또는 선택한 파일)과 폴더를 모두 생성할 수 있는 폴더 구조를 복제할 수 있으면 합니다.
Example:
C:\ProdData has 3 subfolders in it
C:\ProdData\Fld1
C:\ProdData\Fld2
C:\ProdData\Fld3 - has 2 subfolders under it
C:\ProdData\Fld3\MyFolder1
C:\ProdData\Fld3\MyFolder2
위의 각 폴더에는 다양한 크기의 다양한 파일 확장자가 있습니다.
폴더 구조만, 파일만 또는 복사할 파일 및 폴더를 선택할 수 있도록 해당 폴더 구조를 다른 곳에서 복제하는 PowerShell 스크립트를 원합니다.
위에서 C:\ProdData를 다른 폴더에 복사하여 ProdData를 TestData(즉, C:\ProdData를 C:로 복사)로 이름을 변경할 수 있습니다.\TestData) 또는 전체 폴더 구조를 복사합니다.
C:\ProdData다른 항목의 하위 폴더인 다른 폴더로 이동: , 등...
선택적으로 폴더, 파일 또는 둘 다 포함하도록 선택합니다.
이상적인 솔루션은 폴더 구조를 가져와서 내보내고 저장한 후 읽어 들여 다른 곳에 동일한 구조를 만드는 것입니다.제가 찾은 일부 솔루션은 폴더 구조만 복사했다고 했지만, 데이터가 있는 경우 해당 폴더 구조도 복사되므로 둘 중 하나를 제외할 수 없습니다.경로를 반보존하는 파일 전용 요구사항에 대한 부분적인 해결책이 있지만 파일이 필요합니다.
c:\ProdData\Fld1\MyFile.dat
복사 위치:
c:\TestData\yyyyMMdd_hhmmss_ProdData_Fld1_MyFile.dat
하지만 그것은 쉽게 해독될 수 있는 것이 아니며 소스 구조를 다시 통합하는 것은 불가능할 것입니다.어떻게 하면 바퀴를 다시 발명하지 않고 이를 달성할 수 있을지에 대한 생각을 해주시면 감사하겠습니다.
폴더 계층의 모든 항목을 복사하려면 다음과 같이 하십시오.
Copy-Item $source $dest -Recurse -Force
계층을 복사하려면 다음을 수행합니다.
$source = "C:\ProdData"
$dest = "C:\TestData"
Copy-Item $source $dest -Filter {PSIsContainer} -Recurse -Force
파일 구조를 평평하게 하려면 다음을 수행합니다.
$source = "C:\ProdData"
$dest = "C:\TestData"
New-Item $dest -type directory
Get-ChildItem $source -Recurse | `
Where-Object { $_.PSIsContainer -eq $False } | `
ForEach-Object {Copy-Item -Path $_.Fullname -Destination $dest -Force}
행운을 빕니다.
다음은 설명한 각 상황을 처리하기 위한 몇 가지 아이디어입니다.
폴더 구조만
이렇게 하면 소스가 대상에 복사되고 하위 디렉터리가 반복되지만 모든 파일은 제외됩니다.
robocopy $source $dest /e /xf *.*
파일만(플랫텐 구조)
이것을 처리하는 방법은 몇 가지가 있지만, 특별히 좋거나 우아한 방법은 모르겠습니다.각 하위 디렉토리에 대해 루트 대상 폴더에 대한 비재귀적 복사본을 실행하는 어색하지만 효과적인 접근 방식이 있습니다.비판이나 더 나은 대안이 가장 환영받을 것입니다.
Get-ChildItem $source -Recurse |
Where-Object { $_.PSIsContainer -eq $true } |
Foreach-Object { robocopy $_.FullName $dest }
전부다.
이 시나리오는 그 중에서 가장 간단합니다.
robocopy $source $dest /e
직접 해 볼 수 ( ).robocopy /?프로세스를 미세 조정합니다.제 생각에 가장 까다로운 시나리오는 디렉터리 구조를 평평하게 만드는 것입니다.여러 디렉터리에 나타나는 동일한 파일 이름을 처리하는 방법과 같은 몇 가지 결정을 내릴 수 있습니다.
명령줄에서 옵션을 수락하는 방법에 대해서는 Powershell 매개 변수 세트를 세 가지 상황에 함께 사용할 것을 제안합니다.개념에 대해 논의하는 블로그 게시물이 여러 개 있지만 TechNet을 보거나 실행할 수도 있습니다.help about_Functions_Advanced_Parameters파워셸 안에.
제 해결책을 제안합니다.
$source = "C:\temp\"
$dest = "C:\TestData\"
#create destination directory if dont exist
New-Item -ItemType Directory $dest -Force
#To copy everything in a folder hierarchie
Get-ChildItem $source -Recurse | Copy-Item -Destination {$_.FullName.Replace($source, $dest)} -Force
#To copy only directory hierarchie:
Get-ChildItem $source -Recurse -directory | Copy-Item -Destination {$_.FullName.Replace($source, $dest)} -Force
#To copy only file (remove doublon be carefull):
Get-ChildItem $source -Recurse -file | Copy-Item -Destination $dest -Force
다음은 ProdData의 폴더 구조만 파일 없이 TestData로 복사합니다.
$from = "C:\ProdData"
$to = "C:\TestData"
Get-ChildItem -Path $from -Recurse |
?{ $_.PSIsContainer } |
Copy-Item -Destination {Join-Path $to $_.Parent.FullName.Substring($from.length)} -Force
언급URL : https://stackoverflow.com/questions/9996649/copy-folders-without-files-files-without-folders-or-everything-using-powershel
'programing' 카테고리의 다른 글
| 팬더와 함께 Excel XML .xls 파일 읽기 (0) | 2023.08.23 |
|---|---|
| 두 타임스탬프 사이에 있는 타임스탬프가 있는 레코드에 대한 oracle sql 쿼리 (0) | 2023.08.23 |
| tsql에서 소수점 다음에 두 자리를 얻는 방법은 무엇입니까? (0) | 2023.08.23 |
| 음수를 양수로 변환하는 방법은 무엇입니까? (0) | 2023.08.23 |
| 스프링 구성 파일을 사용하여 시스템 속성 설정 (0) | 2023.08.23 |