2016-10-06 2 views
0

Powershell을 사용하여 일련의 하위 디렉토리에서 원본 폴더 구조없이 하나의 폴더로 특정 파일 집합을 반복적으로 복사하고 싶습니다. 파일은 모두 파일 이름 형식 "Writing (*). xlsm"을 따릅니다. 또한, 디렉토리 중 일부는 ZIP 파일에 저장된 파일을 가지고 있으며이 ZIP 파일을이 동일한 파일 이름으로 검색하려고합니다.ZIP 파일 검색을 포함하여 소스에서 단일 디렉토리로 파일을 반복적으로 복사합니다.

파일을 복사 할 수있는 솔루션을 많이 보았지만 그 결과 파일을 찾은 폴더 구조가 다시 생성되지만 모든 파일을 단일 디렉토리에 캡처해야합니다. ZIP 파일 열기 기능을 검색 기능에 추가 할 수 있습니다.

+1

당신이 봤어? –

+0

나는 그렇다. 나는 처음부터 충분히 숙련되지는 못했지만 PS를 사용하여 충분히 미세한 점을 많이 알지 못했지만 대부분의 경우 코드를 필요에 맞게 수정할 수 있습니다. 그러나이 경우에는 하위 폴더를 만들지 않고 파일을 복사 할 수있는 항목을 찾을 수 없었으며 압축 된 아카이브에서이 파일을 추출하고 복사하는 데 사용할 수있는 항목을 보지 못했습니다. –

답변

0

이 시도 :

$Path = "C:\" 
$Destination = "C:\Destination" 
$Files = @() 
$Files = @(Get-ChildItem -Path "$Path" -Filter "Writing*.xml" -Recurse).Fullname 

#Zip 
$ZipFiles = @(Get-ChildItem -Path "$Path" -Filter "*.Zip" -Recurse).Fullname 
[Void][Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem') 
Add-Type -AssemblyName System.IO.Compression.FileSystem 
$ToRemove = @() 
Foreach($Zip in $ZipFiles){ 
     $RawFiles = [IO.Compression.ZipFile]::OpenRead($Zip).Entries 
     foreach($RawFile in $RawFiles) { 
      If($RawFile.FullName -like "Writing*.xml"){ 
       $outpath = $Zip.Remove($Zip.Length - 4) 
       [System.IO.Compression.ZipFile]::ExtractToDirectory($Zip, $outpath) 
       $Files += "$outpath\" + $RawFiles.Fullname 
       $ToRemove += $outpath 
      } 
     } 

    } 

Foreach($File in $Files){ 
    Copy-Item -Path $Files -Destination $Destination 
} 

Foreach($Folder in $ToRemove){ 
    Remove-Item -Path $Folder -Force 
} 
+0

이것은 zip 파일이 아닌 파일에 유용합니다. zip 파일에서 아무 것도 나타나지 않고 그냥 다음 파일로 넘어갑니다. 또한 압축 된 파일 중 일부가 rar 형식이고 zip에서 rar로 필터를 변경하면 발견되는 모든 파일에 대해 오류가 발생합니다. –

+0

더 자세히 살펴본 후 zip 파일에서 검색 한 파일 이름을 수정해야했습니다. 그러나이 파일들에 대해 사용하면 오류가 발생합니다. 진행 상황을 보았을 때 압축 파일을 압축 해제 한 다음 "항목에 ... 자식이 있고 반복 매개 변수가 지정되지 않았습니다. 모든 자식이 제거됩니다"라는 메시지 상자가 나타납니다. 추출 된 모든 파일을 계속 제거하고 대상 파일을 남겨 두지 않았습니다. –

+0

일부 아카이브는 rar 형식이지만 * .zip을 * .rar로 변경하면 "End of Central Directory 레코드를 찾을 수 없습니다"라는 추가 오류가 발생했습니다. zip 또는 rar 계정에 아무 것도 추가 할 수 있습니까? –

관련 문제