标题: [文件操作] 求文件随机分发批处理怎么写? [打印本页]
作者: qiqing 时间: 2019-4-6 13:50 标题: 求文件随机分发批处理怎么写?
例如,文件夹A里面有几万个文件,随机把这些文件,每600个移到新建文件夹1,2,3。。。。这些新建文件夹都建在A文件夹的目录里,一定随机抽取移动,不按照文件名,创建时间这些顺序来移动文件,
不知道我说的清楚不,怎么写呢?求教
作者: zaqmlp 时间: 2019-4-6 14:10
- @echo off
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- start mshta VBScript:Execute("msgbox(""%info%""):close")
- cd /d "%~dp0"
- set "数量=600"
- powershell ^
- $files=@(dir^|?{($_ -is [System.IO.FileInfo]) -and ($_.Name -ne '%~nx0')});^
- $n=1;$list=get-random -input $files -count $files.length;^
- for($i=0;$i -lt $list.length;$i++){^
- if(-not (test-path -liter $n)){[void](md $n);};^
- write-host ($list[$i].Name+' --^> '+$n);^
- move -liter $list[$i].Name $n;^
- if((($i+1) %% %数量%) -eq 0){$n++;};^
- }
- pause
复制代码
作者: qiqing 时间: 2019-4-6 14:49
回复 2# zaqmlp
非常感谢
作者: zaqmlp 时间: 2019-4-6 14:51
回复 3# qiqing
嗯,那就赞助下吧
作者: codegay 时间: 2019-4-6 20:06
nim语言版。- import os, random, sequtils
-
- const
- source = """D:\gayhub\test\测试a"""
- target = """D:\gayhub\test\测试b"""
- max = 600
-
- var dirs:seq[string] = @[]
-
- for k,p in walkDir(source):
- if k == pcFile:
- dirs.add(p)
-
- randomize()
- shuffle(dirs)
-
- var count = 0
-
- if dirs.len > max:
- if dirs.len mod max > 0:
- count = (dirs.len div max) + 1
- else:
- count = dirs.len div max
- else:
- count = 1
-
-
- var dist = dirs.distribute(count, false)
-
- assert dist.len == count
-
- for i, p in dist:
- var path = target / $(i+1)
- discard existsOrCreateDir(path)
- for f in p:
- moveFile(f,path/extractFilename(f))
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |