[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】求助批处理如何随机从文件夹随机循环抽取文件复制到子文件夹

本帖最后由 盛世繁华 于 2022-8-26 18:41 编辑

感谢@flashercs 大佬的帮助!代码十分简洁
——————————————————————————————
求助大佬,现在有一些文件夹,每个文件夹里有一些视频素材,这些素材是根据题材分门别类地放进文件夹里的,也就是一个文件夹里的素材是同类题材。那么现在需要随机从其中一些文件夹,每个文件夹随机抽取一些素材,然后复制到指定文件夹下,选取文件夹的个数和抽取素材的个数可以设定,每抽取一遍就生成一个子文件夹并放入。

为了便于说明这里举栗,现在有1个名为"分组"的bat,1个名为”视频素材“的文件夹,文件夹下有3个子文件夹,每个子文件夹里有3个视频

文件夹:视频素材
           批处理程序:分组.bat
           子文件夹:喜羊羊
                         视频 1喜羊羊.mp4
                         视频 2喜羊羊.flv
                         视频 3喜羊羊.mkv
           子文件夹:光头强
                         视频 1光头强.mp4
                         视频 2光头强.flv
                         视频 3光头强.mkv
           子文件夹:猪猪侠
                         视频 1猪猪侠.mp4
                         视频 2猪猪侠.flv
                         视频 3猪猪侠.mkv

那么运行bat后,在当前目录(也就是”视频素材“文件夹下)自动创建一个跟批处理程序同名的名为”分组“的文件夹,如下:

文件夹:视频素材
           批处理程序:分组.bat
           子文件夹:喜羊羊
                         视频 1喜羊羊.mp4
                         视频 2喜羊羊.flv
                         视频 3喜羊羊.mkv
           子文件夹:光头强
                         视频 1光头强.mp4
                         视频 2光头强.flv
                         视频 3光头强.mkv
           子文件夹:猪猪侠
                         视频 1猪猪侠.mp4
                         视频 2猪猪侠.flv
                         视频 3猪猪侠.mkv
           子文件夹:分组

然后,从当前目录下的文件夹中随机选2个文件夹(暂且设为2个),从中各随机选取1个视频(暂且设为1个),然后把所选取的视频复制到”分组“文件夹的子文件夹下,【需要注意的一点是不从分组文件夹里选取视频】,而且子文件夹自动创建,因为想让它能够循环,这里让它循环2次(暂且设为2次),那么循环第一次选取复制时在”分组“文件夹下创建一个子文件夹”分组1“,循环第二次选取复制放入子文件夹”分组2“,如果循环更多次,那么以此类推为”分组3“.........

那么最终,在随机选2个文件夹,随机各取1个视频,循环选取2次的一种可能的结果如下:

文件夹:视频素材
           批处理程序:分组.bat
           子文件夹:喜羊羊
                         视频 1喜羊羊.mp4
                         视频 2喜羊羊.flv
                         视频 3喜羊羊.mkv
           子文件夹:光头强
                         视频 1光头强.mp4
                         视频 2光头强.flv
                         视频 3光头强.mkv
           子文件夹:猪猪侠
                         视频 1猪猪侠.mp4
                         视频 2猪猪侠.flv
                         视频 3猪猪侠.mkv
           子文件夹:分组
                          子文件夹:分组1
                                        视频 1喜羊羊.mp4
                                        视频 3猪猪侠.mkv
                          子文件夹:分组2
                                        视频 2光头强.flv
                                        视频 2猪猪侠.flv

不知道我是不是表述的清楚了,也就是运行bat后,依次填入三个数值:set /p "NUM1=设置随机选取多少个文件夹>"   set /p "NUM2=设置随机选取多少个视频>"  set /p "NUM3=设置循环选取多少次>"

现在”分组“文件夹和其他的视频文件夹在同一个目录,这些所有的文件包括批处理程序都处在同一个文件夹里感觉就难搞啊。

望大佬指点!感谢!!

  1. @echo off
  2. cd /d "%~dp0"
  3. set /p "NUM1=设置随机选取多少个文件夹>"
  4. set /p "NUM2=设置随机选取多少个视频>"
  5. set /p "NUM3=设置循环选取多少次>"
  6. set "batname=%~n0"
  7. md "%batname%" 2>nul
  8. powershell -c "for($i=1;$i -le $env:NUM3;$i++){$root=[io.directory]::CreateDirectory($env:batname+'\'+$env:batname+$i);get-random -InputObject (gci|?{$_.psiscontainer -and $_.Name -ne $env:batname}) -Count $env:NUM1|foreach{get-random -InputObject ($_|gci|?{-not $_.psiscontainer}) -Count $env:NUM2}|copy-item -dest $root.FullName -Force }"
  9. pause
复制代码
批处理保存ANSI编码
1

评分人数

微信:flashercs
QQ:49908356

TOP

回复 2# flashercs
谢谢大佬,完美解决了,代码很简洁!!!👍👍👍

TOP

返回列表