Board logo

标题: [文件操作] 把指定数量的文件移动到其它目录的批处理怎样写呢? [打印本页]

作者: xzwcn    时间: 2013-4-27 10:47     标题: 把指定数量的文件移动到其它目录的批处理怎样写呢?

把指定数量的文件移动到其它目录的批处理怎样写呢?

如一个目录A中有500张图片(文件名是无规律的),文件夹:1,2,3,4,5,6,7,8,9,10


现在想建立一个批处理实现如下功能:
把这500张图片平均分到这:1-10的文件夹中。


应用:在某些网盘上传中限定了一次最多只能上传多少个文件,
如果文件比较多的时候,通常时先建立文件夹,把一定数量的放到文件夹中
再分别从各个文件夹中选择的。

建立这个批处理的目的就是想让它自动移到相应数量的文件夹到其它目录中。
作者: xxpinqz    时间: 2013-4-27 13:23

本帖最后由 xxpinqz 于 2013-4-27 13:42 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (*.jpg) do set /a total+=1
  3. set id=10
  4. set /a num=!total!/%id%,n=1
  5. for %%a in (*.jpg) do (
  6. if !num! gtr 0 (
  7.   if !n! leq %id% (
  8.     echo xcopy "%%a" .\!n!\
  9.     set /a l+=1,n=l/!num!+1
  10.     if !n! gtr %id% set num=0
  11.     )
  12.   ) else (
  13.     set /a odd+=1
  14.     echo xcopy "%%a" .\!odd!\
  15. ))
  16. echo,&echo 这是测试,结果正确则删除本行及第8,14行的echo&pause
复制代码

作者: apang    时间: 2013-4-27 14:11

  1. @echo off&setlocal enabledelayedexpansion
  2. set Num=10
  3. ::Num为文件夹总数
  4. for %%a in (*.jpg) do set /a n+=1&set ".!n!=%%a"
  5. set /a k=n/Num,1/(n%%Num) 2>nul&&set /a k+=1
  6. ::k为每个文件夹中的文件总数
  7. for /l %%a in (1 1 !n!) do (
  8.    set /a m=%%a-1,m=m/k+1
  9.    :: m为文件夹名
  10.    echo move "!.%%a!" "!m!\"
  11. )
  12. pause
复制代码





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