标题: [文件操作] [已解决]批处理如何实现从每个子文件夹下随机复制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
- @echo off
- REM 设置随机抽取上限
- set max=5
- for /f "delims=" %%i in ('dir /ad /b /s "*.*"') do (
- setlocal enabledelayedexpansion
- set/a "M=!random!%%!max!+1"
- CD "%%i"
- for /f "delims=" %%j in ('dir /a-d /b "*.*"') do (set/a N+=1)
- for /f "delims=" %%j in ('dir /a-d /b "*.*"') do (
- set/a RN=!random!%%!N!+1
- if not defined #!RN! (set "#!RN!=%%j")
- )
- set i=0
- for /f "tokens=2 delims==" %%j in ('set #') do (
- if !i! lss !M! (
- copy /y "%%j" "C:\待处理文件\"
- set/a i+=1
- )
- )
- endlocal
- )
- set/p=执行完毕!
复制代码
回复 1# crownking1983
作者: crownking1983 时间: 2016-4-12 00:14
回复 2# happy886rr
我拷 大神太牛逼了 完美 完美!
作者: WHY 时间: 2016-4-12 22:36
用 Powershell 搞它- $ErrorActionPreference = 'SilentlyContinue'
- new-Item 'C:\待处理' -Type Directory
- dir -Recurse | ?{$_ -is [System.IO.DirectoryInfo]} | %{
- $arr = dir -LiteralPath $_.FullName | ?{$_ -is [System.IO.FileInfo]}
- $n = (get-Random -Maximum 3) + 1;
- get-Random -Input $arr -Count $n | copy -Dest 'C:\待处理\' -Force
- }
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |