如何将D:\BaiduNetdiskDownload所有目录下的所有图片复制提取到D:\bacPic

我来帮你写一个批处理脚本来完成这个任务。以下是几种方法:

方法1:使用批处理脚本(推荐)

batch 复制代码
@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:使用更简单的批处理脚本

batch 复制代码
@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脚本(功能更强大)

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 = 0

Write-Host "开始复制图片..." -ForegroundColor Green

# 遍历所有子目录中的图片文件
Get-ChildItem -Path $source -Recurse -Include $imageExtensions | ForEach-Object {
    $destination = Join-Path $target $_.Name
    
    # 如果文件已存在,添加数字后缀
    $baseName = $_.BaseName
    $extension = $_.Extension
    $counter = 1
    
    while (Test-Path $destination) {
        $destination = Join-Path $target ($baseName + "_" + $counter + $extension)
        $counter++
    }
    
    # 复制文件
    Copy-Item $_.FullName -Destination $destination -Force
    Write-Host "已复制: $($_.Name)" -ForegroundColor Cyan
    $count++
}

Write-Host "`n操作完成!" -ForegroundColor Green
Write-Host "共复制 $count 个图片文件到 $target" -ForegroundColor Yellow

# 保持窗口打开
Read-Host "按回车键退出"

使用方法:

对于批处理脚本:

  1. 打开记事本,复制上面的批处理代码
  2. 保存为 copy_pictures.bat
  3. 右键点击文件,选择"以管理员身份运行"

对于PowerShell脚本:

  1. 打开记事本,复制PowerShell代码
  2. 保存为 Copy-Pictures.ps1
  3. 右键点击文件,选择"使用PowerShell运行"

注意事项:

  1. 权限问题:建议以管理员身份运行脚本
  2. 重复文件:脚本会自动处理重名文件(添加数字后缀)
  3. 文件类型:脚本支持常见的图片格式,你可以根据需要修改扩展名列表
  4. 进度显示:脚本会显示正在复制的文件名
  5. 文件数量:如果文件很多,复制过程可能需要一些时间

高级选项:

如果你想按原目录结构保持文件夹,可以使用这个脚本:

batch 复制代码
@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的完整脚本,因为它处理了重名文件并且有更好的反馈信息。

相关推荐
北京迅为18 分钟前
《【北京迅为】itop-3568开发板NPU使用手册》- 第 7章 使用RKNN-Toolkit-lite2
linux·人工智能·嵌入式·npu
Dragon~Snow28 分钟前
Linux Centos9 安装 Elasticsearch
linux·elasticsearch·jenkins
熊延28 分钟前
麒麟V10系统安装部署elasticsearch
linux·运维·服务器·elasticsearch·搜索引擎·全文检索
Jia ming34 分钟前
跟踪器与事件使用举例
linux·事件·跟踪器
生活很暖很治愈1 小时前
Linux——基础IO&软硬链接
linux·ubuntu
2401_858936881 小时前
【Linux C 编程】标准 IO 详解与实战:从基础接口到文件操作实战
linux·c语言
Roc.Chang1 小时前
Ubuntu 下 VLC 无法启动(Segmentation fault)终极解决方案
linux·ubuntu·vlc·媒体播放
松涛和鸣2 小时前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
简单中的复杂2 小时前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
wVelpro2 小时前
如何在Pycharm 2025.3 版本实现虚拟环境“Make available to all projects”
linux·ide·pycharm