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

[文件操作] [已解决]将一个文件夹里的文件平均分配到多个文件夹里

本帖最后由 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个文件也无所谓)
1

评分人数

    • pcl_test: 感谢给帖子标题标注[已解决]字样PB + 2

非常感谢,谢谢大家给出这么多答案

TOP

本帖最后由 terse 于 2015-10-14 16:54 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1,1,4) do set "_%%i=c:\%%i"
  3. for /f "delims=" %%i in ('dir /b /a-d "!_1!\*.txt"^|find /v /c ""') do set /a len=%%i/4,n=0
  4. for /f "delims=" %%i in ('dir /b /a-d "!_1!\*.txt"') do (
  5.     set /a"m=4-n/len,n+=1,m+=^!m"
  6.     for %%j in (!m!) do move  "!_1!\%%i" "!_%%j!"
  7. )
  8. pause
复制代码
一直平均分 直到结束
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b /a-d "c:\1\*.*"') do (
  3.     set /a "m=n%%4+1,n+=1"
  4.     move  "c:\1\%%i" "c:\!m!"
  5. )
  6. pause
复制代码

TOP

  1. @echo off & setlocal enableDelayedExpansion
  2. for /f %%a in ('dir c:\1\*.txt ^| findstr /r "个文件.*字节$"') do set /a sum=%%a/4
  3. set "d=2"
  4. for /f %%b in ('dir /b c:\1\*.txt') do (
  5.     set /a "n+=1,t=sum-n>>31,d+=t&1,n=t&1|~t&n"
  6.     if !d! leq 4 move "c:\1\%%b" c:\!d!\
  7. )
  8. pause
复制代码

TOP

  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. set _1=c:\2
  4. set _2=c:\3
  5. set _3=c:\4
  6. for %%a in (c:\1\*.txt) do (
  7.   set /a n+=1
  8.   for /f %%i in ("_!n!") do copy "%%a" "!%%i!\" /y
  9.   if !n!==3 set n=
  10. )
复制代码
1

评分人数

TOP

返回列表