Board logo

标题: [文本处理] 批处理文本末尾随机提取txt的处理 [打印本页]

作者: fanfande    时间: 2011-11-26 21:11     标题: 批处理文本末尾随机提取txt的处理

本帖最后由 fanfande 于 2011-11-27 08:51 编辑

在指定的文件夹内有一批html 现在要在这批html的末尾随机添加一些信息!
这些信息我存在一个命名为a.txt里面,一行一个!大致就是下面这信息!
  1. 文章来源:xxxxxxx,录入时间xxxxx
  2. 文章转载地址:xxxxxx,上传时间xxxx
  3. 文章发布日期:xxxxxxx,更新时间xxxx
  4. 本文来源:xxxxxx,作者: xxxxx
复制代码
有没有通过批处理的办法,让这个txt里面的文字随机的放到这批html文件的末尾呢?
备注:html末尾的特征是</body>也就是随机放在</body>之前就好了!并将新的结果生成在新的文件夹内
谢谢各位
我的初步思路
  1. @echo off&SETLOCAL ENABLEDELAYEDEXPANSION
  2. if not exist newtxt\ md newtxt
  3. 读取a.txt
  4. 索引正规html文件夹
  5. 在for /f "delims=" </body>分割
  6. 然后
  7. random
  8. 可惜小弟屡试都不成功啊!基本功不扎实!
复制代码
特来求教,谢谢
作者: 545810831    时间: 2011-11-26 23:57

本帖最后由 545810831 于 2011-11-27 00:20 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3. set /a m+=1
  4. set a!m!=%%i
  5. )
  6. for %%i in (*.html) do (
  7. set /a n+=1
  8. set b!n!=%%i
  9. )
  10. )
  11. if  not exist  新文件夹 md  新文件夹
  12. if  not exist 新文件夹\*.html  copy *.html 新文件夹\
  13. :sta
  14. set /a num+=1,ran=!random!%%!m!+1
  15. echo !a%ran%!>>新文件夹\!b%num%!
  16. if !num! lss !n! goto sta
  17. pause
复制代码

作者: fanfande    时间: 2011-11-27 08:58

回复 2# 545810831


    您好,我测试了一下!随机已经实现了,但是好像有地方没理解清楚!
是在html的末尾,而html的末尾是以</body>为特征的
也就是说a.txt的内容是随机放到每个html的</body>前面就可以!
目前测试下来好像把html很多代码都给删了
作者: powerbat    时间: 2011-11-28 00:13

未考虑文件编码,都当作gbk对待。
  1. @set @n=0//&cscript.exe -e:jscript "%~f0"&exit /b
  2. folder1 = "html文件夹";
  3. folder2 = "新的文件夹";
  4. info = "a.txt";
  5. fso = new ActiveXObject("Scripting.FileSystemObject");
  6. fc = new Enumerator(fso.GetFolder(folder1).files);
  7. files = [];
  8. for (i=0; !fc.atEnd(); fc.moveNext()) {
  9.     fp = fc.item().Path;
  10.     if (/\.(html?)$/i.test(fp)) files[i++] = fp;
  11. }
  12. texts = fso.OpenTextFile(info).ReadAll().split("\r\n");
  13. if (!fso.FolderExists(folder2)) fso.CreateFolder(folder2);
  14. for (i=0; i<files.length; i++)
  15. {
  16.     s = fso.OpenTextFile(files[i]).ReadAll();
  17.     s = s.replace(/(?=<\/body>)/i, texts[parseInt(Math.random()*texts.length)]);
  18.     fso.OpenTextFile(folder2+'\\'+files[i].replace(/.*\\/,'')).write(s));
  19. }
复制代码

作者: fanfande    时间: 2011-11-28 16:08

回复 2# 545810831


    你好高手,我这样修改了一下(修改的意图是想让html文件放在一个文件夹里面的)
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3. set /a m+=1
  4. set a!m!=%%i
  5. )
  6. for %%i in ("html文件夹/*.html") do (
  7. set /a n+=1
  8. set b!n!=%%i
  9. )
  10. )
  11. if  not exist  新的文件夹 md  新的文件夹
  12. if  not exist 新的文件夹\*.html  copy *.html 新的文件夹\
  13. :sta
  14. set /a num+=1,ran=!random!%%!m!+1
  15. echo !a%ran%!>>新的文件夹\!b%num%!
  16. if !num! lss !n! goto sta
  17. pause
复制代码
但是运行下来错误了




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