找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26865|回复: 8

[文本处理] BAT批处理如何从众多分隔符中,随机选择一个,插入代码?

[复制链接]
发表于 2014-1-14 16:33:17 | 显示全部楼层 |阅读模式
以txt文件中有多个段落,每个段落都是</p>结尾,整个文章下来有多个</p>
现在我想随机选择一个</p>在后面加上一段代码,请问批处理怎么写呢?谢谢
例如,一个txt文件的内容如下:
  1. <p>AAA</p>
  2. <p>BBB</p>
  3. <p>CCC</p>
复制代码
现在我想在3个</p>中随机选择一个</p>,后面加上<img src="aa.com/1.jpg">,添加后txt内容为:
  1. <p>AAA</p>
  2. <p>BBB</p><img src="aa.com/1.jpg">
  3. <p>CCC</p>
复制代码
 楼主| 发表于 2014-1-14 17:27:44 | 显示全部楼层
急等,高手些帮帮忙啦
 楼主| 发表于 2014-1-14 19:54:26 | 显示全部楼层
自己顶自己顶自己顶自己顶
发表于 2014-1-14 20:06:08 | 显示全部楼层
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=:" %%a in ('findstr /in "<p>.*</p>" a.txt') do (
  3.     set /a n+=1
  4.     set "_!n!=%%a"
  5. )
  6. set /a m=%Random% %% n + 1
  7. for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do (
  8.     if "!_%m%!"=="%%a" (
  9.         echo,%%b^<img src="aa.com/1.jpg"^>
  10.     ) else echo,%%b
  11. )
  12. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
round626 + 1 谢谢帮忙新手

查看全部评分

发表于 2014-1-14 20:35:30 | 显示全部楼层
很简单啊,找到你要插入内容的地方,比如你想找到4个这样的地方才插入一个特殊内容,那么你运行一个四分之一左右的随机数即可。

比如 1234 随机选一,假如结果是1,那么插入。否则跳过。
 楼主| 发表于 2014-1-14 22:32:05 | 显示全部楼层
回复 4# apang


    你好,请问怎么直接写进txt里面呢 ?
还有是多个txt文件的批量处理,怎么修改下呢?
(第一次来,没有批处理的编程经验, ,能讲详细些吗?)
 楼主| 发表于 2014-1-14 22:43:32 | 显示全部楼层
回复 5# PowerShell


    版主,楼上写的,能在cmd里面看到结果,但是没写到txt中,请问怎么改呢?
还有是批量处理多个txt
发表于 2014-1-15 16:45:47 | 显示全部楼层
效率不高,也想不出好办法
  1. @echo off
  2. for /f "delims=" %%i in ('findstr /im "<p>.*</p>" *.txt') do (
  3.     setlocal enabledelayedexpansion
  4.     for /f "delims=:" %%a in ('findstr /in "<p>.*</p>" "%%i"') do (
  5.         set /a n+=1
  6.         set "_!n!=%%a"
  7.     )
  8.     set /a m=!Random! %% n + 1
  9.     (for /f "tokens=1*delims=:" %%a in ('findstr /n .* "%%i"') do (
  10.         for %%c in (!m!) do (
  11.             if "!_%%c!"=="%%a" (
  12.                 echo,%%b^<img src="aa.com/1.jpg"^>
  13.             ) else echo,%%b
  14.         )
  15.     ))>$
  16.     Move $ "%%i"
  17.     endlocal
  18. )
  19. pause
复制代码
发表于 2014-1-15 23:28:02 | 显示全部楼层
这样处理
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b *.txt') do (
  3.     for /f %%j in ('find /i /c "</p>" ^<"%%i"') do set /a n=!random!%%%%j+1
  4.     (for /f "usebackq delims=" %%j in ("%%i") do (
  5.          set "str=%%j"
  6.          if /i "!str:~-4!" == "</p>" set /a n-=1
  7.          if !n! equ 0 (
  8.             echo,%%j^<img src="aa.com/1.jpg"^>
  9.             set n=-1
  10.          ) else echo,%%j
  11.     ))>$
  12.     move $ "%%i"
  13. )
  14. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 21:34 , Processed in 0.019706 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表