标题: [文本处理] BAT批处理如何从众多分隔符中,随机选择一个,插入代码? [打印本页]
作者: round626 时间: 2014-1-14 16:33 标题: BAT批处理如何从众多分隔符中,随机选择一个,插入代码?
以txt文件中有多个段落,每个段落都是</p>结尾,整个文章下来有多个</p>
现在我想随机选择一个</p>在后面加上一段代码,请问批处理怎么写呢?谢谢
例如,一个txt文件的内容如下:- <p>AAA</p>
- <p>BBB</p>
- <p>CCC</p>
复制代码
现在我想在3个</p>中随机选择一个</p>,后面加上<img src="aa.com/1.jpg">,添加后txt内容为:- <p>AAA</p>
- <p>BBB</p><img src="aa.com/1.jpg">
- <p>CCC</p>
复制代码
作者: round626 时间: 2014-1-14 17:27
急等,高手些帮帮忙啦
作者: round626 时间: 2014-1-14 19:54
自己顶自己顶自己顶自己顶
作者: apang 时间: 2014-1-14 20:06
- @echo off & setlocal enabledelayedexpansion
- for /f "delims=:" %%a in ('findstr /in "<p>.*</p>" a.txt') do (
- set /a n+=1
- set "_!n!=%%a"
- )
- set /a m=%Random% %% n + 1
- for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do (
- if "!_%m%!"=="%%a" (
- echo,%%b^<img src="aa.com/1.jpg"^>
- ) else echo,%%b
- )
- pause
复制代码
作者: PowerShell 时间: 2014-1-14 20:35
很简单啊,找到你要插入内容的地方,比如你想找到4个这样的地方才插入一个特殊内容,那么你运行一个四分之一左右的随机数即可。
比如 1234 随机选一,假如结果是1,那么插入。否则跳过。
作者: round626 时间: 2014-1-14 22:32
回复 4# apang
你好,请问怎么直接写进txt里面呢 ?
还有是多个txt文件的批量处理,怎么修改下呢?
(第一次来,没有批处理的编程经验, ,能讲详细些吗?)
作者: round626 时间: 2014-1-14 22:43
回复 5# PowerShell
版主,楼上写的,能在cmd里面看到结果,但是没写到txt中,请问怎么改呢?
还有是批量处理多个txt
作者: apang 时间: 2014-1-15 16:45
效率不高,也想不出好办法- @echo off
- for /f "delims=" %%i in ('findstr /im "<p>.*</p>" *.txt') do (
- setlocal enabledelayedexpansion
- for /f "delims=:" %%a in ('findstr /in "<p>.*</p>" "%%i"') do (
- set /a n+=1
- set "_!n!=%%a"
- )
- set /a m=!Random! %% n + 1
- (for /f "tokens=1*delims=:" %%a in ('findstr /n .* "%%i"') do (
- for %%c in (!m!) do (
- if "!_%%c!"=="%%a" (
- echo,%%b^<img src="aa.com/1.jpg"^>
- ) else echo,%%b
- )
- ))>$
- Move $ "%%i"
- endlocal
- )
- pause
复制代码
作者: terse 时间: 2014-1-15 23:28
这样处理- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b *.txt') do (
- for /f %%j in ('find /i /c "</p>" ^<"%%i"') do set /a n=!random!%%%%j+1
- (for /f "usebackq delims=" %%j in ("%%i") do (
- set "str=%%j"
- if /i "!str:~-4!" == "</p>" set /a n-=1
- if !n! equ 0 (
- echo,%%j^<img src="aa.com/1.jpg"^>
- set n=-1
- ) else echo,%%j
- ))>$
- move $ "%%i"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |