Board logo

标题: [文件操作] [分享]批处理从每个文件夹只提取一个图片到新文件夹 [打印本页]

作者: Batcher    时间: 2022-11-9 16:47     标题: [分享]批处理从每个文件夹只提取一个图片到新文件夹

【问题描述】

请教下,可以帮忙写个代码,让每个文件夹只提取一个图片,复制在新建的文件夹里面吗?
作者: Batcher    时间: 2022-11-9 16:48

【解决方案】

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. )
复制代码

作者: Batcher    时间: 2022-11-11 14:38

【问题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. )
复制代码

作者: Batcher    时间: 2022-11-11 15:31

【需求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. )
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2