문제

여러 개의 디렉토리를 복사하려고 합니다.비슷한 이름을 가진 텍스트 파일이 있고 복사할 디렉터리를 결정하려면 디렉터리를 해당 텍스트 파일과 일치시켜야 합니다.

이것이 내가 한 일이며 어떻게 고칠 수 있는지 알 수 없습니다.나는 원을 그리며 돌아 다니고 있습니다.

$destination = "..\..\$args\Images\"
$txtfiles = Get-ChildItem $destination -Include *.txt
$source = "..\..\..\Images\" | ?{ $_.PSIsContainer } | Where-Object { $_.Name -Like "*$txtfiles*" } | Copy-Item $destination

txt 파일의 예: 1e03655b-0aac-48b2-82f3-75942084af7a.txt

및 폴더: name.1e03655b-0aac-48b2-82f3-75942084af7a

그래서 txt 파일과 일치하는 폴더를 찾아 해당 폴더를 txt 파일 디렉터리에 복사해야 합니다.

감사해요

도움이 되었습니까?

해결책

.txt 부분을 잘라내기 위해 해당 텍스트 파일의 BaseName 속성을 확장하고 다음과 같은 문자열 배열을 갖고 싶습니다.

1e03655b-0aac-48b2-82f3-75942084af7a
1e03655b-0aac-48b2-82f3-75942084af7b
1e03655b-0aac-48b2-82f3-75942084af8g
1e03655b-0aac-48b2-82f3-75942084afba

그럼 당신의 $source = 줄은 파이프라인 아래로 문자열을 파이프하는 것이 아니라 디렉터리 목록을 가져와야 합니다. 그런 다음 디렉터리 이름을 정규식 일치와 일치시키고 해당 일치가 맞는지 확인하는 것이 좋습니다. -in $txtfiles.

$destination = "..\..\$args\Images\"
$txtfiles = Get-ChildItem $destination -Filter *.txt | Select -ExpandProperty BaseName
$source = "..\..\..\Images\"
GCI $source -Directory | ?{ $_.Name -match "(\w{8}-\w{4}-\w{4}-\w{4}-\w{12})$" } | %{If($Matches[1] -in $txtfiles){Copy-Item $_.FullName $destination}}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top