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

[文本处理] 批处理每个文件夹随机复制3张照片

[复制链接]
发表于 2023-12-9 17:13:01 | 显示全部楼层 |阅读模式
本帖最后由 3537589 于 2023-12-9 17:15 编辑


随机选取这些文件里面 3张图片。复制到新文件夹里面。自动重命名
求大神帮忙,谢谢了
发表于 2023-12-9 17:18:12 | 显示全部楼层
回复 1# 3537589


    根据什么规则重命名?
 楼主| 发表于 2023-12-9 17:28:39 | 显示全部楼层
回复 2# Batcher

重命名 1.2.3.4 .5 这样命名以此类推下去就可以
发表于 2023-12-9 19:20:03 | 显示全部楼层
本帖最后由 77七 于 2023-12-9 19:24 编辑

回复 3# 3537589


  1. @echo off
  2. rem 批处理保存为ansi编码格式

  3. set newFolder=a
  4. set m=3

  5. cd /d "%~dp0"
  6. md "%newFolder%"
  7. for /f "delims=" %%d in ('dir /b /ad') do (
  8.         if "%%d" neq "%newFolder%" (
  9.                 setlocal
  10.                 for %%a in ("%newFolder%\*.jpg") do set /a k+=1
  11.                 for %%a in ("%%d\*.jpg") do (
  12.                         call set _%%random%%_%%random%%=%%a
  13.                 )
  14.                 for /f "tokens=1* delims==" %%a in ('2^>nul set _') do (
  15.                         set /a n+=1,k+=1
  16.                         set file=%%b
  17.                         setlocal enabledelayedexpansion
  18.                         if !n! leq %m% (
  19.                                 copy "!file!" "!newFolder!\!k!.jpg"
  20.                         )
  21.                         endlocal
  22.                 )
  23.                 endlocal
  24.         )
  25. )
  26. pause
复制代码
 楼主| 发表于 2023-12-9 21:27:25 | 显示全部楼层
回复 4# 77七
谢谢了。
发表于 2023-12-10 00:15:35 | 显示全部楼层

  1. @echo off&chcp 936

  2. set count=3
  3. set fd=___aaa

  4. if not exist "%fd%" md "%fd%"
  5. set /a fn+=1
  6. for /d %%x in (*) do (
  7. if "%%x" neq "%fd%" (

  8. setlocal
  9. for %%y in ("%%x\*.*p*") do (
  10. set /a a+=1&set file=%%y
  11. call set "@@%%random%%@%%a%%_%%~xy=%%y"
  12. )

  13. for /f "tokens=1 delims==" %%z in ('set @@ 2^>nul') do (
  14. set /a c+=1
  15. if not defined done (
  16. set fx=%%z
  17. setlocal enabledelayedexpansion
  18. if %count% geq !c!  (
  19. echo copy /y "!%%z!" "!fd!\!fn!!fx:*_=!"
  20. copy /y "!%%z!" "!fd!\!fn!!fx:*_=!" && set /a fn+=1
  21. for %%h in (!fn!) do endlocal&set fn=%%h
  22. ) else endlocal&set done=1
  23. )
  24. )

  25. for /f %%h in ('echo %%fn%%') do endlocal&set fn=%%h
  26. )
  27. )
  28. echo,&pause&exit/b
复制代码
发表于 2023-12-11 10:33:05 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2023-12-11 11:45 编辑

新文件夹为“abc”。
1.代码第10行的数字为需要复制的图片个数;
2.代码第8行可以保证设置的变量随机数名称不会重复;
3.图片扩展名为jpg;
  1. @echo off
  2. md ..\abc
  3. for /f "delims=" %%i in ('dir /b /ad') do (
  4.     setlocal enabledelayedexpansion
  5.     pushd "%%i"
  6.     for /f "delims=" %%j in ('dir /b /a-d *.jpg') do (
  7.         set /a n+=1
  8.         set "_!random!-!n!=%%j"
  9.     )
  10.     set /a n-=3
  11.     for /f "tokens=1* delims==" %%k in ('set _^|more +!n!') do copy "%%l" "..\..\abc"
  12.     popd
  13.     endlocal
  14. )
  15. move "..\abc"
  16. pause
复制代码
代码未经测试。
发表于 2023-12-11 15:18:29 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2023-12-11 15:51 编辑

重命名的需求未注意到。
代码中 第2行 为设置复制图片数量:
  1. @echo off
  2. set num=3
  3. md ..\abc
  4. setlocal enabledelayedexpansion
  5. for /f "delims=" %%i in ('dir /b /ad') do (
  6.     setlocal enabledelayedexpansion
  7.     pushd "%%i"
  8.     for /f "delims=" %%j in ('dir /b /a-d *.jpg') do (
  9.         set /a n+=1
  10.         set "_!random!-!n!=%%j"
  11.     )
  12.     set /a n-=num
  13.     for /f "tokens=1* delims==" %%k in ('set _^|more +!n!') do (
  14.         set /a x+=1
  15.         copy "%%l" "..\..\abc\!x!.jpg"
  16.     )
  17.     popd
  18.     endlocal
  19.     set /a x+=num
  20. )
  21. move "..\abc"
  22. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 06:50 , Processed in 0.019024 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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