找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18509|回复: 3

[文件操作] [分享]批处理从每个文件夹只提取一个图片到新文件夹

[复制链接]
发表于 2022-11-9 16:47:53 | 显示全部楼层 |阅读模式
【问题描述】

请教下,可以帮忙写个代码,让每个文件夹只提取一个图片,复制在新建的文件夹里面吗?
 楼主| 发表于 2022-11-9 16:48:07 | 显示全部楼层
【解决方案】

test_1.bat 请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. cd /d "%~dp0"
  3. set "NewFolder=%~dp0..\新建文件夹"
  4. if not exist "%NewFolder%" (
  5.     md "%NewFolder%"
  6. )

  7. for /f "delims=" %%i in ('dir /b /ad') do (
  8.     echo 正在处理文件夹:%%i
  9.     pushd "%%i"
  10.     call :MoveFile
  11.     popd
  12. )
  13. pause
  14. goto :eof

  15. :MoveFile
  16. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  17.     echo 复制文件 "%%i" 到文件夹 "%NewFolder%"
  18.     copy "%%i" "%NewFolder%"
  19.     goto :eof
  20. )
复制代码
 楼主| 发表于 2022-11-11 14:38:21 | 显示全部楼层
【问题2】

可以再稍微改2个点吗:①新建的文件夹可以放在文件夹里面,不要放在桌面;②可以把每个文件夹含有【正面】这个字眼的图片单独复制在新建的文件夹里面

【方案2】
  1. @echo off
  2. cd /d "%~dp0"
  3. set "NewFolder=BatTest文件夹"
  4. if not exist "%NewFolder%" (
  5.     md "%NewFolder%"
  6. )

  7. for /f "delims=" %%i in ('dir /b /ad ^| findstr /v /x "%NewFolder%"') do (
  8.     echo 正在处理文件夹:%%i
  9.     pushd "%%i"
  10.     call :CopyFile
  11.     copy /y "*正面*.jpg" "..\%NewFolder%"
  12.     popd
  13. )
  14. pause
  15. goto :eof

  16. :CopyFile
  17. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  18.     echo 复制文件 "%%i" 到文件夹 "%NewFolder%"
  19.     copy /y "%%i" "..\%NewFolder%"
  20.     goto :eof
  21. )
复制代码
 楼主| 发表于 2022-11-11 15:31:54 | 显示全部楼层
【需求3】

可以用了;但是现在把每个文件夹内每一张图片和含有正面的 都提取了,可以再微调吗,就是分开一种是每一张图片,另外一种是 含有正面的

【方案3】
  1. @echo off
  2. cd /d "%~dp0"
  3. set "NewFolder1=BatTest一张"
  4. set "NewFolder2=BatTest正面"
  5. if not exist "%NewFolder1%" (
  6.     md "%NewFolder1%"
  7. )
  8. if not exist "%NewFolder2%" (
  9.     md "%NewFolder2%"
  10. )

  11. for /f "delims=" %%i in ('dir /b /ad ^| findstr /v /x /c:"%NewFolder1%" /c:"%NewFolder2%"') do (
  12.     echo 正在处理文件夹:%%i
  13.     pushd "%%i"
  14.     call :MoveFile
  15.     copy /y "*正面*.jpg" "..\%NewFolder2%"
  16.     popd
  17. )
  18. pause
  19. goto :eof

  20. :MoveFile
  21. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  22.     echo 复制文件 "%%i" 到文件夹 "%NewFolder1%"
  23.     copy /y "%%i" "..\%NewFolder1%"
  24.     goto :eof
  25. )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 11:36 , Processed in 0.017770 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表