对于许多主文件夹,如何将所有子文件夹移动到主文件夹中?

对于许多主文件夹,如何将所有子文件夹移动到主文件夹中?

我有 1800 个主文件夹,其中大约 1000 个文件夹包含同名(始终是同名)的子文件夹。

这些子文件夹中的文件没有被我使用的程序拾取,因为它们不在主文件夹中。我尝试过更改程序的目录,但可惜无济于事。

所以我需要将所有这些子文件夹移动到主文件夹中,你知道该怎么做吗?

例如:

包含所有文件的文件夹1

folder2 及其子文件夹也名为 folder2,其中包含所有文件

包含所有文件的文件夹3

+1797

ETC。

答案1

您可以创建一个批处理脚本来为您完成这项工作。复制下面的代码,将其放入记事本中。使用您想要的名称保存文件,但使用 *.bat 扩展名。然后将主文件夹(而不是主子文件夹)拖到批处理文件中。

首先对一些副本进行测试,看看结果是否符合预期......

@echo off

IF /i exist "%~1" (set "MainFolder=%~1") else (exit)

pushd "%MainFolder%"
For /f "delims=" %%a in ('dir /ad /b 2^>nul') do Call :MSubfolders "%%~a"

exit

:MSubfolders
set "MSubfolder=%~1"
for /f "delims=" %%a in ('dir /ad /b /s "%MSubfolder%\*" ^|sort /r 2^> nul') do (
                                                                                 for /f "delims=" %%b in ('dir /b /a-d "%%a\*" 2^>nul') do IF /i not exist "%MSubfolder%\%%b" (move "%%a\%%b" "%MSubfolder%\") else (call :Rename "%%a" "%%b")
                                                                                 rd "%%a\"
                                                                                )
goto :EOF

:Rename
for /l %%a in (1,1,100) do (
                            if /i not exist "%MSubfolder%\%~n2(%%a)%~x2" move "%~1\%~2" "%MSubfolder%\%~n2(%%a)%~x2"
                            goto :EOF
                           )
goto :EOF

在此处输入图片描述

答案2

未经测试,但是这个电源外壳应该很接近。

任务:

  • 应将 namin 文件夹的任何子文件夹的文件移动到主文件夹,然后删除子文件夹。
  • 命令从包含主文件夹的文件夹运行(路径很容易添加)

详细:

Get-ChildItem -Directory | Where-Object { ( $SubFolder = Get-ChildItem $_.FullName -Directory ) } -PipelineVariable MainFolder | ForEach-Object{
    # Move files to MainFolder
    Get-ChildItem $SubFolder -File | Move-Item -Destination $MainFolder.FullName -WhatIf
    # Delete empty SubFolder
    Remove-Item $SubFolder -WhatIf
}

别名:

gci -ad | ? { ( $SubFolder = gci $_.FullName -ad ) } -pv MainFolder | %{
    gci $SubFolder -af | move -Destination $MainFolder.FullName -WhatIf
    del $SubFolder -WhatIf
}

-WhatIf参数允许您测试命令而无需实际移动/删除。测试后删除以执行操作。

相关内容