Board logo

标题: [文件操作] [已解决]批处理如何实现从每个子文件夹下随机复制1-3个文件到指定文件夹里? [打印本页]

作者: crownking1983    时间: 2016-4-11 22:11     标题: [已解决]批处理如何实现从每个子文件夹下随机复制1-3个文件到指定文件夹里?

本帖最后由 crownking1983 于 2016-4-12 00:15 编辑

求bat命令 实现从每个子文件夹下随机选1-3个文件复制到指定文件夹“C:\待处理文件”里

比如一个文件夹下有1000个子文件夹,因工作需要,要从每个子文件夹下随机选1-3个文件复制到指定文件夹下以便批量加防伪码。
注意1.每个子文件夹下都要至少随机抽选一个,最多三个。每个子文件夹抽取一个还是三个完全随机不要有规律(如果能实现1-2个 或1-5个 或1-8个自己随意设置那就更好了)
2.抽取到的文件复制到 C:\待处理文件 这个目录下,是复制不是移动

跪求啊!神啊帮帮我吧
作者: happy886rr    时间: 2016-4-11 23:11

  1. @echo off
  2. REM 设置随机抽取上限
  3. set max=5
  4. for /f "delims=" %%i in ('dir /ad /b /s "*.*"') do (
  5. setlocal enabledelayedexpansion
  6. set/a "M=!random!%%!max!+1"
  7. CD "%%i"
  8. for /f "delims=" %%j in ('dir /a-d /b "*.*"') do (set/a N+=1)
  9. for /f "delims=" %%j in ('dir /a-d /b "*.*"') do (
  10. set/a RN=!random!%%!N!+1
  11. if not defined #!RN! (set "#!RN!=%%j")
  12. )
  13. set i=0
  14. for /f "tokens=2 delims==" %%j in ('set #') do (
  15. if !i! lss !M! (
  16. copy /y "%%j" "C:\待处理文件\"
  17. set/a i+=1
  18. )
  19. )
  20. endlocal
  21. )
  22. set/p=执行完毕!
复制代码
回复 1# crownking1983
作者: crownking1983    时间: 2016-4-12 00:14

回复 2# happy886rr


    我拷 大神太牛逼了 完美 完美!
作者: WHY    时间: 2016-4-12 22:36

用 Powershell 搞它
  1. $ErrorActionPreference = 'SilentlyContinue'
  2. new-Item 'C:\待处理' -Type Directory
  3. dir -Recurse | ?{$_ -is [System.IO.DirectoryInfo]} | %{
  4.     $arr = dir -LiteralPath $_.FullName | ?{$_ -is [System.IO.FileInfo]}
  5.     $n = (get-Random -Maximum 3) + 1;
  6.     get-Random -Input $arr -Count $n | copy -Dest 'C:\待处理\' -Force
  7. }
复制代码





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