Windows下如何通过CMD将148个子文件夹中的.jpg批量迁移至单文件夹?
Windows下归集所有子文件夹JPG文件的实现方法
没问题,我来帮你把这个Linux下的文件归集需求迁移到Windows环境,给你两种实用的实现方案,都是基于你提到的递归查找思路来的:
方法一:CMD批处理脚本(兼容所有Windows版本)
你已经知道用dir /S /B *.jpg来递归查找所有JPG文件,我们可以把这个命令和for循环结合起来,写成批处理脚本:
- 先创建一个文本文件,把下面的代码复制进去,然后保存为
move_jpgs.bat:
@echo off :: 先检查目标文件夹是否存在,不存在则创建 if not exist "Destination" md "Destination" :: 递归查找所有JPG文件并移动到目标文件夹 for /f "delims=" %%i in ('dir /S /B *.jpg') do move /Y "%%i" "Destination" echo 所有JPG文件已完成归集! pause
- 把这个批处理文件放到你的源目录的上级文件夹(如果你的源文件夹叫
source,可以把命令里的dir /S /B *.jpg改成dir /S /B source\*.jpg,这样更精准)。 - 双击运行即可。
说明:
delims=是为了处理带空格的文件名,避免文件名被拆分成多个部分;/Y参数会让move命令自动覆盖目标文件夹里的同名文件,和你Linux脚本里的mv行为一致,如果不想覆盖,可以去掉/Y,这时遇到同名文件会提示确认。
方法二:PowerShell脚本(更灵活强大)
如果你的Windows版本是Win7及以上,PowerShell是更好的选择,代码更简洁且功能更丰富:
- 打开PowerShell,切换到你的源目录所在位置,执行下面的命令:
# 递归查找source文件夹下的所有JPG文件,移动到Destination文件夹 Get-ChildItem -Path ".\source" -Filter "*.jpg" -Recurse | Move-Item -Destination ".\Destination" -Force
- 如果你想做成可重复运行的脚本,创建一个
move_jpgs.ps1文件,把上面的代码复制进去,右键选择“用PowerShell运行”即可。
说明:
-Recurse参数实现递归遍历所有子文件夹;-Force参数用于自动覆盖同名文件,不需要的话可以去掉;- PowerShell对带特殊字符的文件名支持更好,相比批处理更稳定。
两种方法都能实现你要的效果,根据你的使用习惯选择就行~
内容的提问来源于stack exchange,提问作者F333
相关产品推荐
相关产品推荐

