标题: [文本处理] 批处理每个文件夹随机复制3张照片 [打印本页]
作者: 3537589 时间: 2023-12-9 17:13 标题: 批处理每个文件夹随机复制3张照片
本帖最后由 3537589 于 2023-12-9 17:15 编辑
随机选取这些文件里面 3张图片。复制到新文件夹里面。自动重命名
求大神帮忙,谢谢了
作者: Batcher 时间: 2023-12-9 17:18
回复 1# 3537589
根据什么规则重命名?
作者: 3537589 时间: 2023-12-9 17:28
回复 2# Batcher
重命名 1.2.3.4 .5 这样命名以此类推下去就可以
作者: 77七 时间: 2023-12-9 19:20
本帖最后由 77七 于 2023-12-9 19:24 编辑
回复 3# 3537589
- @echo off
- rem 批处理保存为ansi编码格式
-
- set newFolder=a
- set m=3
-
- cd /d "%~dp0"
- md "%newFolder%"
- for /f "delims=" %%d in ('dir /b /ad') do (
- if "%%d" neq "%newFolder%" (
- setlocal
- for %%a in ("%newFolder%\*.jpg") do set /a k+=1
- for %%a in ("%%d\*.jpg") do (
- call set _%%random%%_%%random%%=%%a
- )
- for /f "tokens=1* delims==" %%a in ('2^>nul set _') do (
- set /a n+=1,k+=1
- set file=%%b
- setlocal enabledelayedexpansion
- if !n! leq %m% (
- copy "!file!" "!newFolder!\!k!.jpg"
- )
- endlocal
- )
- endlocal
- )
- )
- pause
复制代码
作者: 3537589 时间: 2023-12-9 21:27
回复 4# 77七
谢谢了。
作者: Five66 时间: 2023-12-10 00:15
- @echo off&chcp 936
-
- set count=3
- set fd=___aaa
-
- if not exist "%fd%" md "%fd%"
- set /a fn+=1
- for /d %%x in (*) do (
- if "%%x" neq "%fd%" (
-
- setlocal
- for %%y in ("%%x\*.*p*") do (
- set /a a+=1&set file=%%y
- call set "@@%%random%%@%%a%%_%%~xy=%%y"
- )
-
- for /f "tokens=1 delims==" %%z in ('set @@ 2^>nul') do (
- set /a c+=1
- if not defined done (
- set fx=%%z
- setlocal enabledelayedexpansion
- if %count% geq !c! (
- echo copy /y "!%%z!" "!fd!\!fn!!fx:*_=!"
- copy /y "!%%z!" "!fd!\!fn!!fx:*_=!" && set /a fn+=1
- for %%h in (!fn!) do endlocal&set fn=%%h
- ) else endlocal&set done=1
- )
- )
-
- for /f %%h in ('echo %%fn%%') do endlocal&set fn=%%h
- )
- )
- echo,&pause&exit/b
复制代码
作者: qixiaobin0715 时间: 2023-12-11 10:33
本帖最后由 qixiaobin0715 于 2023-12-11 11:45 编辑
新文件夹为“abc”。
1.代码第10行的数字为需要复制的图片个数;
2.代码第8行可以保证设置的变量随机数名称不会重复;
3.图片扩展名为jpg;- @echo off
- md ..\abc
- for /f "delims=" %%i in ('dir /b /ad') do (
- setlocal enabledelayedexpansion
- pushd "%%i"
- for /f "delims=" %%j in ('dir /b /a-d *.jpg') do (
- set /a n+=1
- set "_!random!-!n!=%%j"
- )
- set /a n-=3
- for /f "tokens=1* delims==" %%k in ('set _^|more +!n!') do copy "%%l" "..\..\abc\"
- popd
- endlocal
- )
- move "..\abc"
- pause
复制代码
代码未经测试。
作者: qixiaobin0715 时间: 2023-12-11 15:18
本帖最后由 qixiaobin0715 于 2023-12-11 15:51 编辑
重命名的需求未注意到。
代码中 第2行 为设置复制图片数量:- @echo off
- set num=3
- md ..\abc
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /ad') do (
- setlocal enabledelayedexpansion
- pushd "%%i"
- for /f "delims=" %%j in ('dir /b /a-d *.jpg') do (
- set /a n+=1
- set "_!random!-!n!=%%j"
- )
- set /a n-=num
- for /f "tokens=1* delims==" %%k in ('set _^|more +!n!') do (
- set /a x+=1
- copy "%%l" "..\..\abc\!x!.jpg"
- )
- popd
- endlocal
- set /a x+=num
- )
- move "..\abc"
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |