2017-02-05 2 views
0

나는 powershell에만 이름을 기반으로 하위 폴더로 폴더를 이동하는 방법을 찾고 있었으며 각 폴더에는 임의의 이름을 가진 여러 이미지가 포함되어 있습니다.Powershell - 이름으로 폴더 구성

폴더와 같은 이름을 가지고

/bob.builder.housing.Project/ 
/racing.jenason.button.driver/ 
/working.project.bob.builder/ 
/f1.jenson.button.racing/ 
/instructions.bob.builder.house/ 
/random.not.matching/ 
나는 이름의이 폴더에 대한 이름과 목록을 비교하고

는 name.txt 포함 일치하는 경우 폴더를 이동해야

...

bob.builder 
jenson.button 

새 구조는 다음과 같아야합니다.

/jenson.button/racing.jenason.button.driver/ 
/jenson.button/f1.jenson.button.racing/ 

/bob.builder/bob.builder.housing.Project/ 
/bob.builder/working.project.bob.builder/ 
/bob.builder/instructions.bob.builder.house/ 

/random.not.matching/ 

폴더 이름을 비교하는 방법을 알아낼 수 없으며 폴더 이름을 해당 폴더로 옮겼습니다.

도움을 주시면 감사하겠습니다.

+1

Get-ChildItem의 별칭 인 'LS'로 시작한 다음 'Get-Member'에 파이프를 연결하면 몇 가지 예제를 검색 할 수 있습니다. 이러한 예제 중 하나를 선택하고 TEST 데이터로 작업 한 다음 올린 내용을 게시하십시오. – user4317867

+0

'gc 'r : \ name.txt'| % {mkdir "r : \ $ _"-force> $ null; "r : \ * $ _ *" "r : \ $ _"-force -ea silent}' – wOxxOm

답변

0

다음 코드를 사용할 수 있습니다. 폴더의 이름을 얻습니다. 폴더 이름이 없으면 폴더를 만들려고합니다. 그런 다음 basename과 일치하는 폴더를 이동합니다.

Get-Content 'names.txt' | ForEach-Object { 
    IF (-not (Test-path $_)) 
    { 
     New-Item -Name $_ -ItemType Directory 
    } 
    $foldername = Get-Item $_ 

    Get-ChildItem -Directory -Exclude $_ | ForEach-Object { 
     IF ($_.BaseName -match $foldername.basename ) 
      { 
       Move-Item -Path $_ -Destination $foldername 
      } 
    } 
}