Board logo

标题: [文件操作] 【已解决】求助批处理如何按文件数目分发文件到文件夹 [打印本页]

作者: compwj    时间: 2009-3-14 21:22     标题: 【已解决】求助批处理如何按文件数目分发文件到文件夹

假如我有文件夹A 里面有 1010 个文件
我想使用批处理代码实现

设定文件数目x 假如是100
会自动在文件夹A下面建立11个文件夹(A1 A2 A3....A11) 前面10个里都是 100个文件 最后一个是10个文件

设定文件数目x 假如是50 会自动在文件夹A下面建立21个文件夹(A1 A2 A3....A21) 前面10个里都是 50个文件 最后一个是10个文件


就是按设定数目分发文件 有没有哪位高手 指点一下 不胜感激

[ 本帖最后由 compwj 于 2009-3-14 22:24 编辑 ]
作者: namejm    时间: 2009-3-14 22:01

  “21个文件夹(A1 A2 A3....A21) 前面10个里都是 50个文件 最后一个是10个文件”,不是有21个文件夹么?前10个+最后一个=11个,那还有10个跑哪里去了?如何确定哪个是最后一个?

  1010、100、11、50、21……这些数字之间有什么关系?从你的描述来看,应该是有个算术公式在里面的,请你明确地给个说法,而不是让大家来帮你发现规律——既要大家帮你解答问题,还要顺带帮你总结规律,如果不是你太懒惰,就是解答的人太过热心,似乎热心人的热情都是有限度的吧?
作者: tireless    时间: 2009-3-14 22:16

  1. @echo off&setlocal enabledelayedexpansion
  2. set "fpath=D:\Program Files\A"
  3. for %%a in ("%fpath%") do set fname=%%~nxa
  4. set n=1
  5. set /p per=请输入每个文件夹的文件个数:
  6. for %%a in ("%fpath%\*") do (
  7.   set /a per-=1,1/per 2>nul || set /a n+=1,per=%per%
  8.   if not exist "%fpath%\%fname%!n!" md "%fpath%\%fname%!n!"
  9.   move "%%a" "%fpath%\%fname%!n!"
  10. )
复制代码

[ 本帖最后由 tireless 于 2009-3-14 22:17 编辑 ]
作者: compwj    时间: 2009-3-14 22:18

不好意思 我描述的不清楚
我说下我遇到的情况
我有经常有几个文件夹 里面有上万个文件 一般都是同一种文件
我使用软件对他们处理
但是上万个文件 软件一次打开容易死机
我希望能用批处理实现 我设定一个数目 比如   100
批处理 会每 100个文件建立一个文件夹  并将100个文件移动进去
那么我会获得很多装有100个文件的文件夹  再用软件处理每个文件夹里的100个文件 就容易得多

应为我不太会批处理 希望高手帮帮忙
作者: compwj    时间: 2009-3-14 22:24

谢谢 三楼的 tireless  还有 管理员 namejm
这么快就有了 正解
作者: compwj    时间: 2009-3-15 00:51

再请教一下  能否实现动态监测
批处理 动态监测 文件夹A内文件
有一个文件 即建立一个子文件夹A1  并将文件 移到子文件夹A1
当子文件夹A1内 文件数目 达到设定值时 比如100时 建立下一个子文件夹A2  并将后面的文件 移动到A2
以此类推
如能告知 万分感谢

我使用一软件  不断向一文件夹内 复制文件  但似乎 xp对文件数量有限制
文件数一到17000的时候  就无法写入  故希望在 文件分发的基础上实现动态文件分发
作者: Batcher    时间: 2009-3-15 11:33     标题: 回复 6楼 的帖子

可以。
dir命令的倒数第二行就是文件个数统计。
动态检测用延时即可,具体代码可在本论坛搜索“延时”。




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