标题: [文本处理] 【已解决】求一段txt中每段内容随机位置插入指定字符的BAT代码 [打印本页]
作者: zq437400 时间: 2013-9-27 18:20 标题: 【已解决】求一段txt中每段内容随机位置插入指定字符的BAT代码
本帖最后由 zq437400 于 2013-9-29 12:15 编辑
找了很久都没找到,哪位高手能帮忙写一个?(不好意思啊,我可能是实例弄错了,不是标点符号后面的,是随机在一段文字里面插入,实在不好意思啊)
比如有个txt中有几段文字
清高?抵得上一份工作吗?能让你吃好、喝好、住好吗?不要以为端盘子洗碗、站超市、打扫卫生天生就不是你干的事,不要以为你天生就是拯救世界的料儿,日子是过出来的,不是想出来的。
20岁上下,该现实点了,放下清高的架子,折断幻想的翅膀,才会走的更精彩!
20岁上下,一个充满理想却过于富于幻想的年龄。成功是经历了比别人更多的努力、付出、毅力、痛苦与艰辛后得到的,不是能幻想出来的。即使天上有掉陷饼的事也不会砸到整天幻想的人。
20岁上下,一个涉世不深却自谓看透一切的年龄。我们常常讽刺社会的肮脏、丑陋、**,自以为很纯洁,就浅薄的说出活在这样的世界很无奈的话。热爱生命,不要只是处在大学的象塔中才说出这样的话,在当我们经历了社会的各种不纯洁时也要能说出这样的话。
20岁上下,在大学中你看到的连社会中的一个角都抵不上。要想真正的看透人生,等你闭眼的那一刻才是看透了,好好活着才有看破红尘的一天。
插入后
清高?抵得上一份工作吗?能让你{title}吃好、喝好、住好吗?不要以为端盘子洗碗、站超市、打扫卫生天生就不是你干的事,不要以为你天{title}生就是拯救世界的料儿,{title}日子是过出来的,不是想出来的。
20岁上下,该现实点了,放下清{title}高的架子,{title}折断幻想的翅膀,才会走的更精彩!
20岁上下,一个充满理想却过于富于幻想{title}的年龄。成功是经历了比别人更多的努力、{title}付出、毅力、痛苦与艰辛后得到的,{title}不是能幻想出来的。即使天上有掉陷饼的事也不会砸到整天幻想的人{title}。
20岁上下,一个涉世不深却{title}自谓看透一切的年龄。{title}我们常常讽刺社会的肮脏、丑陋、**,自以为很纯洁,{title}就浅薄的说出活在这样的世界很无奈的话。热爱生命,不要只是处在大学的象塔中才说出这样的话,{title}在当我们经历了社会的各种不纯洁时也要能说出这样的话。
20岁上下,在大学中你看到的连社会中的一个角都抵不上。要想真正{title}的看透人生,等你闭眼的那一刻才是看透了,好好活着才有看破红尘的一天。
是每段不是每行
随机插入2个3个或者4个就行!!在线等
作者: PowerShell 时间: 2013-9-27 18:26
我写过一个,不知道你用的上么?
文本文件内容混淆器
程序作用:把一段文本插入乱字符。
乱字符内容由变量 $zifuku 控制,$zifuku = "è","e","í" 表示随机插入这三个字符之一。
插入间隔由变量 $jiange 控制,$jiange = 3..9 表示间隔是3---9个字符之间。
通过自定义这两个变量来适合你的需求。
程序使用了定时器控件,好处是单线程UI不会无响应,坏处是处理大文本较慢,
处理大文本想要速度,建议用多线程重写程序。
作者: batman 时间: 2013-9-27 19:24
看了下楼主的描述,好像并不是很随机的插入啊,应该是随机把指定字符插入到标点符号后面吧?如果是这样批处理除了逐字符检测没有更好的办法了,效率是大问题啊。。。
作者: batman 时间: 2013-9-27 20:34
本帖最后由 batman 于 2013-9-27 21:13 编辑
请先在运行代码前将文本中的*字符手工替换为××,不然有*字符的这一段会出现乱插入的情况 ,至于标点分隔符自己可以在代码中添加:- @echo off&setlocal enabledelayedexpansion
- for /l %%a in (10000,1,11000) do set "a=%%a"&set "code=!a:~1!!code!"
- (for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do (
- if "%%b" neq "" (
- set "str=%%b"&set "var=%%b"&set /a total=0,m=0
- for %%c in ("," ";" " " " ") do set "str=!str:%%~c=@!"
- for %%c in (, 。 ? !) do set "str=!str:%%c= !"
- for %%c in (!str!) do (
- set "zf=%%c%%c%%c%%c!code!"
- set /a zf=1!zf:~4000,4!-9999,total+=zf
- set "bd=!bd! !total!"
- )
- for %%c in (!bd!) do (
- set /a a=!random! %% 2
- if !a! equ 0 if %%c neq !total! (
- set /a b=%%c+m
- for %%d in (!b!) do (
- set "var=!var:~,%%d!{title}!var:~%%d!"
- set /a m+=7
- )
- )
- )
- echo,!var!&set "bd="
- ) else (
- echo,
- )
- ))>new.txt
- start new.txt
复制代码
作者: zq437400 时间: 2013-9-28 13:50
本帖最后由 zq437400 于 2013-9-28 14:04 编辑
回复 4# batman
真是不好意思,我可能是实例写错了,我找到一段代码
echo off
setlocal enabledelayedexpansion
set /a x=%random%%%(5-0)+(0+1)
set a=0
for /f %%i in (6.txt) do (
set b=%%i
echo !b:~0,-%x%!{title}!b:~-%x%!>>2.txt
)
start 2.txt
发现在每段结束的地方会被插入,而我不想插入太明显有规律性,我想没规律,麻烦版主了
作者: batman 时间: 2013-9-28 20:48
没想到随机位置插入代码更加复杂了,幸好效率还行。。。。- @echo off&setlocal enabledelayedexpansion
- for /l %%a in (10000,1,11000) do set "a=%%a"&set "code=!a:~1!!code!"
- (for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do (
- if "%%b" neq "" (
- setlocal
- set "zf=%%b%%b%%b%%b%code%"&set "str=%%b"
- set /a zf=1!zf:~4000,4!-10000
- set /a a=!random! %% 4+1
- for /l %%c in (1,1,!a!) do (
- set /a b=!random! %% zf+1
- for %%d in (!b!) do (
- if defined cr (
- if "!cr: %%d =!" equ "!cr!" (
- set "cr= %%d !cr!"
- for %%e in (!cr!) do (
- if %%e lss %%d (
- set "cr=!cr: %%d =!"
- set "cr=!cr: %%e = %%e %%d !"
- )
- )
- )
- ) else (
- set "cr= %%d "
- )
- )
- )
- for %%c in (!cr!) do (
- set /a a=%%c+m
- for %%d in (!a!) do (
- set "str=!str:~,%%d!{title}!str:~%%d!"
- set /a m+=7
- )
- )
- echo,!str!&endlocal
- ) else (
- echo,
- )
- ))>new.txt
- start new.txt
复制代码
作者: zq437400 时间: 2013-9-29 12:13
厉害总算解决了啊
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |