Board logo

标题: [文件操作] 批处理如何随机分组合并同一文件夹下多个TXT文件? [打印本页]

作者: qscy    时间: 2010-5-19 23:16     标题: 批处理如何随机分组合并同一文件夹下多个TXT文件?

假如一个目录下有300个TXT文件,我想随机以15个TXT文件为一组,分别合并成20个TXT文件,那么这样的批处理该怎样写呢?谢谢了
作者: hanyeguxing    时间: 2010-5-19 23:32

  1. @echo off&setlocal enabledelayedexpansion&set r=1
  2. for %%i in (*.txt) do call:n "%%i"
  3. for /F "tokens=2 delims==" %%i in ('set #') do (set/a a+=1
  4. for %%j in (!r!) do set @%%j=!@%%j!+"%%i"
  5. if !a!==15 set a=0&set/a r+=1)
  6. for /F "tokens=1* delims==" %%i in ('set @') do set j=%%j&copy /b !j:~1! "%%i.txt"
  7. exit
  8. :n
  9. set n=%random%
  10. if defined #%n% (goto:n) else set "#%n%=%~1"
复制代码
所有输出文件的文件名都以@开头

[ 本帖最后由 hanyeguxing 于 2010-5-19 23:51 编辑 ]
作者: sgaizxt001    时间: 2010-5-19 23:33

没必要另开题目,这个是个私人论坛,请节约下资源,为别人着想。
师傅给了我就不写了。嘿嘿
作者: qscy    时间: 2010-5-20 00:09

非常好用,谢谢大家的帮助,论坛真不错:)
作者: qscy    时间: 2010-5-20 14:51

假如换种方式,一个目录下有300个TXT文件,随机以每15个TXT文件为一组建立一个子文件夹并将这15个文件移到子文件夹里,共生成20个子文件夹,不用合并TXT文件,这样的批处理代码是什么呢?麻烦了,谢谢
作者: hanyeguxing    时间: 2010-5-20 14:58

  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (*.txt) do call:n "%%i"
  3. set r=1&md 1\
  4. for /F "tokens=2 delims==" %%i in ('set #') do (
  5. set/a a+=1&move "%%i" !r!\
  6. if !a!==15 set a=0&set/a r+=1&md !r!\)
  7. exit
  8. :n
  9. set n=%random%
  10. if defined #%n% (goto:n) else set "#%n%=%~1"
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-20 15:23 编辑 ]
作者: qscy    时间: 2010-5-20 15:09

谢谢孤星,测试了一下,上面的代码功能上基本没什么问题,可以正常生成目录和移动文件,但是在一闪而过的CMD窗口上显示找不到路径,最后总是会剩下14个TXT文件在根目录里,而最后一个生成的文件夹里的文件不到15个。

[ 本帖最后由 qscy 于 2010-5-20 15:14 编辑 ]
作者: hanyeguxing    时间: 2010-5-20 15:24

重新运行测试,或贴出你运行的代码,最好贴出原文件的列表。
作者: qscy    时间: 2010-5-20 15:35

重新运行了一下,没有任何问题,太完美了:)




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