Windows:把所有子文件夹里的文件移动到母文件夹

需求:批量将每个母文件夹里的所有子文件夹文件,都会移动到对应的母文件夹下面,不会混到别的母文件夹里,遇到重复的名称都会自动重命名

打开 PowerShell,输入:

$top = "D:\Downloads\总文件夹"

Get-ChildItem $top -Directory | ForEach-Object {
    $parent = $_.FullName

    Get-ChildItem $parent -Recurse -File | ForEach-Object {
        $dest = Join-Path $parent $_.Name
        $i = 1

        while (Test-Path $dest) {
            $dest = Join-Path $parent ("{0}_{1}{2}" -f $_.BaseName, $i, $_.Extension)
            $i++
        }

        Move-Item $_.FullName $dest
    }

    Get-ChildItem $parent -Recurse -Directory | Sort-Object FullName -Descending | Remove-Item
}

结果:

a.jpg
a_1.jpg
a_2.jpg

不会覆盖原文件