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

[文件操作] 批处理如何随机分组合并同一文件夹下多个TXT文件?

假如一个目录下有300个TXT文件,我想随机以15个TXT文件为一组,分别合并成20个TXT文件,那么这样的批处理该怎样写呢?谢谢了

  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 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

没必要另开题目,这个是个私人论坛,请节约下资源,为别人着想。
师傅给了我就不写了。嘿嘿
努力学习,努力挣分

TOP

非常好用,谢谢大家的帮助,论坛真不错:)

TOP

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

TOP

  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 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

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

[ 本帖最后由 qscy 于 2010-5-20 15:14 编辑 ]

TOP

重新运行测试,或贴出你运行的代码,最好贴出原文件的列表。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

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

TOP

返回列表