标题: [文件操作] 批处理如何随机分组合并同一文件夹下多个TXT文件? [打印本页]
作者: qscy 时间: 2010-5-19 23:16 标题: 批处理如何随机分组合并同一文件夹下多个TXT文件?
假如一个目录下有300个TXT文件,我想随机以15个TXT文件为一组,分别合并成20个TXT文件,那么这样的批处理该怎样写呢?谢谢了
作者: hanyeguxing 时间: 2010-5-19 23:32
- @echo off&setlocal enabledelayedexpansion&set r=1
- for %%i in (*.txt) do call:n "%%i"
- for /F "tokens=2 delims==" %%i in ('set #') do (set/a a+=1
- for %%j in (!r!) do set @%%j=!@%%j!+"%%i"
- if !a!==15 set a=0&set/a r+=1)
- for /F "tokens=1* delims==" %%i in ('set @') do set j=%%j© /b !j:~1! "%%i.txt"
- exit
- :n
- set n=%random%
- 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
- @echo off&setlocal enabledelayedexpansion
- for %%i in (*.txt) do call:n "%%i"
- set r=1&md 1\
- for /F "tokens=2 delims==" %%i in ('set #') do (
- set/a a+=1&move "%%i" !r!\
- if !a!==15 set a=0&set/a r+=1&md !r!\)
- exit
- :n
- set n=%random%
- 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 |