我来帮你写一个批处理脚本来完成这个任务。以下是几种方法:
方法1:使用批处理脚本(推荐)
@echo off chcp 65001 >nul setlocal enabledelayedexpansion REM 设置源目录和目标目录 set "source=D:\BaiduNetdiskDownload" set "target=D:\bacPic" REM 创建目标目录(如果不存在) if not exist "%target%" mkdir "%target%" echo 正在从 %source% 复制所有图片到 %target%... echo. REM 设置图片扩展名列表 set "extensions=.jpg .jpeg .png .gif .bmp .webp .tiff .ico .svg" REM 遍历所有目录和子目录 for /r "%source%" %%f in (*.jpg *.jpeg *.png *.gif *.bmp *.webp *.tiff *.ico *.svg) do ( REM 获取文件名 set "filename=%%~nxf" REM 检查文件是否已存在(避免重复) if not exist "%target%\!filename!" ( echo 正在复制: %%f copy "%%f" "%target%\" >nul ) else ( REM 如果文件已存在,添加前缀避免覆盖 set "counter=1" :check_duplicate if exist "%target%\!filename:~0,-4!_!counter!%%~xf" ( set /a counter+=1 goto check_duplicate ) echo 文件已存在,重命名为: !filename:~0,-4!_!counter!%%~xf copy "%%f" "%target%\!filename:~0,-4!_!counter!%%~xf" >nul ) ) echo. echo 图片复制完成! echo 所有图片已保存到: %target% pause方法2:使用更简单的批处理脚本
@echo off chcp 65001 >nul REM 创建目标文件夹 mkdir "D:\bacPic" 2>nul REM 复制所有常见格式的图片 for /r "D:\BaiduNetdiskDownload" %%i in (*.jpg *.jpeg *.png *.gif *.bmp) do ( copy "%%i" "D:\bacPic\" >nul echo 已复制: %%i ) echo. echo 所有图片已复制到 D:\bacPic pause方法3:使用PowerShell脚本(功能更强大)
# 保存为 Copy-Pictures.ps1 文件$source="D:\BaiduNetdiskDownload"$target="D:\bacPic"# 创建目标目录if(-not(Test-Path$target)){New-Item-ItemType Directory-Path$target-Force}# 定义图片扩展名$imageExtensions= @('*.jpg','*.jpeg','*.png','*.gif','*.bmp','*.webp','*.tiff','*.ico')# 计数器$count= 0Write-Host"开始复制图片..."-ForegroundColor Green# 遍历所有子目录中的图片文件Get-ChildItem-Path$source-Recurse-Include$imageExtensions|ForEach-Object{$destination=Join-Path$target$_.Name# 如果文件已存在,添加数字后缀$baseName=$_.BaseName$extension=$_.Extension$counter= 1while(Test-Path$destination){$destination=Join-Path$target($baseName+"_"+$counter+$extension)$counter++}# 复制文件Copy-Item$_.FullName-Destination$destination-ForceWrite-Host"已复制:$($_.Name)"-ForegroundColor Cyan$count++}Write-Host"`n操作完成!"-ForegroundColor GreenWrite-Host"共复制$count个图片文件到$target"-ForegroundColor Yellow# 保持窗口打开Read-Host"按回车键退出"使用方法:
对于批处理脚本:
- 打开记事本,复制上面的批处理代码
- 保存为
copy_pictures.bat - 右键点击文件,选择"以管理员身份运行"
对于PowerShell脚本:
- 打开记事本,复制PowerShell代码
- 保存为
Copy-Pictures.ps1 - 右键点击文件,选择"使用PowerShell运行"
注意事项:
- 权限问题:建议以管理员身份运行脚本
- 重复文件:脚本会自动处理重名文件(添加数字后缀)
- 文件类型:脚本支持常见的图片格式,你可以根据需要修改扩展名列表
- 进度显示:脚本会显示正在复制的文件名
- 文件数量:如果文件很多,复制过程可能需要一些时间
高级选项:
如果你想按原目录结构保持文件夹,可以使用这个脚本:
@echo off chcp 65001 >nul setlocal enabledelayedexpansion xcopy "D:\BaiduNetdiskDownload\*.jpg" "D:\bacPic\" /s /i xcopy "D:\BaiduNetdiskDownload\*.png" "D:\bacPic\" /s /i xcopy "D:\BaiduNetdiskDownload\*.gif" "D:\bacPic\" /s /i xcopy "D:\BaiduNetdiskDownload\*.bmp" "D:\bacPic\" /s /i echo 所有图片已复制完成! pause选择最适合你需求的方法即可。推荐使用方法1的完整脚本,因为它处理了重名文件并且有更好的反馈信息。