Board logo

标题: [文本处理] [己解决]批处理怎样实现txt文本中随机文字? [打印本页]

作者: veek    时间: 2010-12-26 13:20     标题: [己解决]批处理怎样实现txt文本中随机文字?

请教高手,这个帖子的功能如何实现呢?
帖子地址如下:
http://www.bathome.net/viewthread.php?tid=9262&page=1

其中:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (123.txt) do (
  3. set /a n+=1
  4. set ".!n!=%%a"
  5. )
  6. md temp
  7. for %%i in (*.txt) do (
  8. if not "%%~nxi"=="123.txt" (
  9. set /a m=0,h=0
  10. for /f "usebackq" %%a in ("%%i") do set /a m+=1
  11. set "htm=temp\%%~ni.html"
  12. echo %%~ni^
  13. >"!htm!"
  14. set /a w=!random!%%n+1,w2=!random!%%m+1
  15. for /f "usebackq delims=" %%j in ("%%i") do (
  16. set /a h+=1
  17. if !h! equ !w2! (
  18. for %%b in (!w!) do echo !.%%b!^
  19. >>"!htm!"
  20. )
  21. echo %%j^
  22. >>"!htm!"
  23. )
  24. )
  25. )
复制代码
现在我想随机插入的机率更高一点,现在一上文本只随机插入一个随机文字,我的意思就是能多插几个随机文字吗?
还有帮我把插入<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

  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. for /f "delims=" %%a in (123.txt) do (
  4.     set /a n+=1
  5.     set .!n!=%%a
  6. )
  7. md temp
  8. for %%i in (*.txt) do (
  9.     if not "%%i"=="123.txt" (
  10.         SetLocal
  11.         for /f "usebackq" %%a in ("%%i") do set /a m+=1
  12.         set /a lines = !random! %% 3 + 3
  13.         for /l %%a in (1 1 !lines!) do (
  14.             set /a line = !random! %% m + 1
  15.             set #!line!#=:D
  16.         )
  17.         for /f "usebackq delims=" %%j in ("%%i") do (
  18.             set /a h+=1
  19.             if defined #!h!# (
  20.                 set /a .n_n = !random! %% n + 1
  21.                 for %%b in (!.n_n!) do echo !.%%b!
  22.             )
  23.             echo,%%j
  24.         )
  25.         EndLocal
  26.     ) > "temp\%%i"
  27. )
复制代码

作者: veek    时间: 2010-12-26 23:05

谢谢版主,实在是太给力了。
作者: lydxliusun    时间: 2011-9-11 10:32

回复 8# tmplinshi


    这个代码是实现了在文件以开头加入随机文本的功能,我想问一下,我如果要在文章任意位置随机的插入随机文本,这个功能能否实现呢?  谢谢
作者: Batcher    时间: 2011-9-11 12:07

回复 10# lydxliusun


可以实现,有问题的话建议单独发帖提问。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2