2014-03-29 3 views
1

저는 PowerShell을 처음 사용합니다. 필자는 패턴과 일치하는 파일 이름으로 소스에서 대상으로 전체 폴더 구조를 복사해야합니다. 나는 다음을하고있다. 그러나 루트 디렉토리에 내용을 복사하기 만하면됩니다. 예를 들어powershell에서 정규식과 일치하는 파일 이름을 복사하는 방법은 무엇입니까?

"E : \ 워크 플로우 \ mydirectory \ file_3.30.xml"

이 복사되지 않습니다.

여기 내 명령 시퀀스입니다.

PS F:\Tools> $source="E:\Workflow" 
PS F:\Tools> $destination="E:\3.30" 
PS F:\Tools> $filter = [regex] "3.30.xml" 
PS F:\Tools> $bin = Get-ChildItem -Path $source | Where-Object {$_.Name -match $filter} 
PS F:\Tools> foreach ($item in $bin) {Copy-Item -Path $item.FullName -Destination $destination} 
PS F:\Tools> foreach ($item in $bin) {Copy-Item -Path $item.FullName -Destination $destination -recurse} 

답변

3

몇 가지 문제가 있습니다. 먼저 -RecurseGet-ChildIte으로 전환하면 필터와 일치하는 모든 파일이 아무리 깊게 발견 될 수도 있습니다. 그런 다음 존재하지 않는 디렉토리로 파일을 복사 할 수 없으므로 원래 디렉토리 구조를 다시 작성해야합니다. 나는이 후 오랜 시간 알고 있지만 당신에게 대단히 감사합니다

$source="E:\Workflow" 
$destination="E:\3.30" 
$filter = [regex] "3.30.xml" 
$bin = Get-ChildItem -Recurse -Path $source | Where-Object {$_.Name -match $filter} 
foreach ($item in $bin) { 
    $newDir = $item.DirectoryName.replace($source,$destination) 
    md $newDir -ea 0 
    Copy-Item -Path $item.FullName -Destination $newDir 
} 
+0

: 다음은 트릭을 할 것입니다 - MD에 -ea 0 스위치 새로운 디렉토리를 만들 때 반드시 오류가 무시되어 있는지 확인합니다 이 작업을 수행하는 방법에 대한 좋은 자습서를 작성합니다. :) – ZaxLofful

관련 문제