标题: [文本处理] [己解决]批处理怎样实现txt文本中随机文字? [打印本页]
作者: veek 时间: 2010-12-26 13:20 标题: [己解决]批处理怎样实现txt文本中随机文字?
请教高手,这个帖子的功能如何实现呢?
帖子地址如下:
http://www.bathome.net/viewthread.php?tid=9262&page=1
其中:- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in (123.txt) do (
- set /a n+=1
- set ".!n!=%%a"
- )
- md temp
- for %%i in (*.txt) do (
- if not "%%~nxi"=="123.txt" (
- set /a m=0,h=0
- for /f "usebackq" %%a in ("%%i") do set /a m+=1
- set "htm=temp\%%~ni.html"
- echo %%~ni^
- >"!htm!"
- set /a w=!random!%%n+1,w2=!random!%%m+1
- for /f "usebackq delims=" %%j in ("%%i") do (
- set /a h+=1
- if !h! equ !w2! (
- for %%b in (!w!) do echo !.%%b!^
- >>"!htm!"
- )
- echo %%j^
- >>"!htm!"
- )
- )
- )
复制代码
现在我想随机插入的机率更高一点,现在一上文本只随机插入一个随机文字,我的意思就是能多插几个随机文字吗?
还有帮我把插入<BR>和改扩展名HTML的功能去掉,非常感谢!!!!
再次感谢!
我也是想实现他的这个功能,感谢热心人解答,谢谢大
作者: veek 时间: 2010-12-26 13:24
批处理真强大,但我不会用,请教各位了。
作者: hanyeguxing 时间: 2010-12-26 14:10
原帖由 veek 于 2010-12-26 13:20 发表
现在我想随机插入的机率更高一点,现在一上文本只随机插入一个随机文字,我的意思就是能多插几个随机文字吗?
还有帮我把插入<BR>和改扩展名HTML的功能去掉,非常感谢!!!!
1,想多插入,在 set /a w=!random!%%n+1,w2=!random!%%m+1 这里根据需要改
2,<BR>已经被楼主去了
3,改扩展名HTML的功能去掉,在 set "htm=temp\%%~ni.html" 这里改成 set "htm=temp\%%~nxi"
作者: tmplinshi 时间: 2010-12-26 15:32
几个问题:
1、是否要保留文本中的空行及英文感叹号?
2、是否直接覆盖原文件,还是输出到另外一个目录?
3、多插入几个随机字符,是插入几个?
这个方案怎样:插入少于文本一半行数的随机字。比如有 100 行,那么插入随机字的数量介于 1~50 个。
[ 本帖最后由 tmplinshi 于 2010-12-26 15:36 编辑 ]
作者: veek 时间: 2010-12-26 19:39
几个问题:
1、是否要保留文本中的空行及英文感叹号?
2、是否直接覆盖原文件,还是输出到另外一个目录?
3、多插入几个随机字符,是插入几个?
1.不用
2.最好是别一个目录
3.是插入三到四句话,在123.txt中的,一行一句.
作者: veek 时间: 2010-12-26 19:40
原帖由 hanyeguxing 于 2010-12-26 14:10 发表
1,想多插入,在 set /a w=!random!%%n+1,w2=!random!%%m+1 这里根据需要改
2,已经被楼主去了
3,改扩展名HTML的功能去掉,在 set "htm=temp\%%~ni.html" 这里改成 set "htm=temp\%%~nxi"
BR好像还是有的。我看到源文件有</br>输出了。
作者: veek 时间: 2010-12-26 20:25
随风版主的才有用,他这个生成不了的,才1K
引用:
未考虑文件名及文件内容含半角 ! 的情况
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (随机.txt) do (
set /a n+=1
set ".!n!=%%a"
)
md temp
for %%i in (*.txt) do (
if not "%%~nxi"=="随机.txt" (
set /a m=0,h=0
for /f "usebackq" %%a in ("%%i") do set /a m+=1
set "htm=temp\%%~ni.html"
echo %%~ni^<br^>>"!htm!"
set /a w=!random!%%n+1,w2=!random!%%m+1
for /f "usebackq delims=" %%j in ("%%i") do (
set /a h+=1
if !h! equ !w2! (
for %%b in (!w!) do echo !.%%b!^<br^>>>"!htm!"
)
echo %%j^<br^>>>"!htm!"
)
)
)
:: bbs
引用:
1,想多插入,在 set /a w=!random!%%n+1,w2=!random!%%m+1 这里根据需要改
2,<BR>已经被楼主去了
3,改扩展名HTML的功能去掉,在 set "htm=temp\%%~ni.html" 这里改成 set "htm=temp\%%~nxi"
答:第一我改成2都不行。
引用:
几个问题:
1、是否要保留文本中的空行及英文感叹号?
2、是否直接覆盖原文件,还是输出到另外一个目录?
3、多插入几个随机字符,是插入几个?
这个方案怎样:插入少于文本一半行数的随机字。比如有 100 行,那么插入随机字的数量介于 1~50 个。
1.不要。
2.输出到另外一个目录
3、在随机.txt中,一行一句,我想插入三句-5句之间。
这个方案怎样:插入少于文本一半行数的随机字。比如有 100 行,那么插入随机字的数量介于 1~50 个。
1-8个就行了。。。
感谢大家的解答。提前祝元旦快乐。
作者: tmplinshi 时间: 2010-12-26 21:23
- @echo off
- SetLocal EnableDelayedExpansion
- for /f "delims=" %%a in (123.txt) do (
- set /a n+=1
- set .!n!=%%a
- )
- md temp
- for %%i in (*.txt) do (
- if not "%%i"=="123.txt" (
- SetLocal
- for /f "usebackq" %%a in ("%%i") do set /a m+=1
- set /a lines = !random! %% 3 + 3
- for /l %%a in (1 1 !lines!) do (
- set /a line = !random! %% m + 1
- set #!line!#=:D
- )
- for /f "usebackq delims=" %%j in ("%%i") do (
- set /a h+=1
- if defined #!h!# (
- set /a .n_n = !random! %% n + 1
- for %%b in (!.n_n!) do echo !.%%b!
- )
- echo,%%j
- )
- EndLocal
- ) > "temp\%%i"
- )
复制代码
作者: veek 时间: 2010-12-26 23:05
谢谢版主,实在是太给力了。
作者: lydxliusun 时间: 2011-9-11 10:32
回复 8# tmplinshi
这个代码是实现了在文件以开头加入随机文本的功能,我想问一下,我如果要在文章任意位置随机的插入随机文本,这个功能能否实现呢? 谢谢
作者: Batcher 时间: 2011-9-11 12:07
回复 10# lydxliusun
可以实现,有问题的话建议单独发帖提问。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |