sourcetip

Powershell: 폴더 및 하위 폴더의 모든 파일을 단일 폴더로 이동

fileupload 2023. 10. 20. 14:07
반응형

Powershell: 폴더 및 하위 폴더의 모든 파일을 단일 폴더로 이동

8K 파일과 2K 폴더 내의 파일을 인덱싱하고 검색하려고 합니다.

폴더 및/또는 하위 폴더의 모든 파일을 하나의 기본 폴더로 이동할 수 있는 간단한 Powershell 스크립트가 있습니까?

빈 폴더를 삭제할 필요는 없지만 도움이 될 것입니다.

아래의 네번째 예.help -Examples Move-Item[1] 당신이 필요로 하는 것에 가깝습니다.아래의 모든 파일을 이동하려면SOURCE에 대한 디렉토리DEST디렉토리를 사용할 수 있습니다.

Get-ChildItem -Path SOURCE -Recurse -File | Move-Item -Destination DEST

나중에 빈 디렉토리를 지우려면 비슷한 명령을 사용할 수 있습니다.

Get-ChildItem -Path SOURCE -Recurse -Directory | Remove-Item

[1] https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/move-item

사용하다.parent부모님을 위해서요재귀적으로 사용할 수 있습니다..parent.parent

다른 답변은 중복된 파일 때문에 저에게 오류로 이어졌습니다.제 코드는 중복 파일에 '_x'를 붙여서 이 문제를 해결합니다.또한 파일이 남아있지 않을 경우에만 제거가 가능해야 합니다.

$files = Get-ChildItem -Path . -Recurse -File
foreach ($file in $files) {
  $dest = Join-Path . $file.Name
  if (Test-Path $dest) {
    $i = 1
    do {
      $newName = "$($file.BaseName)_$i$($file.Extension)"
      $newDest = Join-Path . $newName
      $i++
    } while (Test-Path $newDest)
    Move-Item -Path $file.FullName -Destination $newDest
  } else {
    Move-Item -Path $file.FullName -Destination $dest
  }
}

Get-ChildItem -Directory | Where-Object {(Get-ChildItem $_ -Recurse -File).count -eq 0} | ForEach-Object {Remove-Item $_ -Recurse}

언급URL : https://stackoverflow.com/questions/38063424/powershell-move-all-files-from-folders-and-subfolders-into-single-folder

반응형