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

[文本处理] 批处理文本末尾随机提取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-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
复制代码

TOP

回复 2# 545810831


    您好,我测试了一下!随机已经实现了,但是好像有地方没理解清楚!
是在html的末尾,而html的末尾是以</body>为特征的
也就是说a.txt的内容是随机放到每个html的</body>前面就可以!
目前测试下来好像把html很多代码都给删了
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

未考虑文件编码,都当作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. }
复制代码

TOP

回复 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
复制代码
但是运行下来错误了
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

返回列表