如何通过CMD/PowerShell将Subfolder_2文件移至对应Subfolder_1?
解决方案:将Subfolder_2内的文件移动到对应Subfolder_1
针对你的文件夹结构(顶层→Subfolder_1→Subfolder_2),以下脚本可以精准将每个Subfolder_2中的文件移动到它的父目录Subfolder_1中,而不是统一移到顶层文件夹。
Batch 脚本
将以下代码保存为.bat文件,放在顶层文件夹运行:
@echo off setlocal enabledelayedexpansion :: 遍历顶层文件夹下的所有Subfolder_1 for /d %%a in (*) do ( :: 检查当前Subfolder_1下是否存在Subfolder_2 if exist "%%a\Subfolder_2\" ( :: 移动Subfolder_2内所有文件到Subfolder_1 move "%%a\Subfolder_2\*.*" "%%a\" :: 可选:删除空的Subfolder_2,取消下面一行注释即可 :: rmdir "%%a\Subfolder_2\" ) ) endlocal echo 文件移动完成 pause
PowerShell 脚本
将以下代码保存为.ps1文件,放在顶层文件夹运行:
# 筛选出顶层文件夹下所有Subfolder_1中的Subfolder_2 Get-ChildItem -Directory -Filter "Subfolder_2" -Recurse | Where-Object { $_.Depth -eq 2 } | ForEach-Object { # 将Subfolder_2内的所有文件移动到对应的Subfolder_1 Move-Item -Path "$($_.FullName)\*" -Destination $_.Parent.FullName -Force # 可选:删除空的Subfolder_2目录,取消下面一行注释即可 # Remove-Item -Path $_.FullName -Force } Write-Host "文件移动操作完成"
说明
之前的脚本问题在于:所有递归找到的文件都被统一移动到脚本所在的顶层目录(.)或顶层的父目录(..),没有针对每个Subfolder_2的父目录单独处理。上述脚本会遍历每个目标Subfolder_2,将其中的文件移动到它自己的父目录(对应的Subfolder_1),完全匹配你的需求。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

