标题: [文件操作] [已解决]将一个文件夹里的文件平均分配到多个文件夹里 [打印本页]
作者: habulu 时间: 2015-10-14 01:09 标题: [已解决]将一个文件夹里的文件平均分配到多个文件夹里
本帖最后由 pcl_test 于 2018-4-12 12:42 编辑
求平均分配文件的批处理脚本
比如有一个文件夹c:\1中有多个文本文件,然后有其他文件夹c:\2、c:\3、c:\4
能否有个批处理,执行后,c:\1中的文件能平均放置在c:\1、c:\2、c:\3、c:\4这4个文件夹中,使得4个文件夹内的文件基本相等(个数不够分的时候就让c:\1多1至3个文件也无所谓)
作者: flyinnet9 时间: 2015-10-14 09:52
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- set _1=c:\2
- set _2=c:\3
- set _3=c:\4
- for %%a in (c:\1\*.txt) do (
- set /a n+=1
- for /f %%i in ("_!n!") do copy "%%a" "!%%i!\" /y
- if !n!==3 set n=
- )
复制代码
作者: aa77dd@163.com 时间: 2015-10-14 13:06
- @echo off & setlocal enableDelayedExpansion
- for /f %%a in ('dir c:\1\*.txt ^| findstr /r "个文件.*字节$"') do set /a sum=%%a/4
- set "d=2"
- for /f %%b in ('dir /b c:\1\*.txt') do (
- set /a "n+=1,t=sum-n>>31,d+=t&1,n=t&1|~t&n"
- if !d! leq 4 move "c:\1\%%b" c:\!d!\
- )
- pause
复制代码
作者: terse 时间: 2015-10-14 13:53
本帖最后由 terse 于 2015-10-14 16:54 编辑
- @echo off&setlocal enabledelayedexpansion
- for /l %%i in (1,1,4) do set "_%%i=c:\%%i"
- for /f "delims=" %%i in ('dir /b /a-d "!_1!\*.txt"^|find /v /c ""') do set /a len=%%i/4,n=0
- for /f "delims=" %%i in ('dir /b /a-d "!_1!\*.txt"') do (
- set /a"m=4-n/len,n+=1,m+=^!m"
- for %%j in (!m!) do move "!_1!\%%i" "!_%%j!"
- )
- pause
复制代码
一直平均分 直到结束- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d "c:\1\*.*"') do (
- set /a "m=n%%4+1,n+=1"
- move "c:\1\%%i" "c:\!m!"
- )
- pause
复制代码
作者: habulu 时间: 2015-10-14 22:19
非常感谢,谢谢大家给出这么多答案
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |