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

[文本处理] [己解决]批处理怎样实现txt文本中随机文字?

[复制链接]
发表于 2010-12-26 13:20:13 | 显示全部楼层 |阅读模式
请教高手,这个帖子的功能如何实现呢?
帖子地址如下:
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的功能去掉,非常感谢!!!!


再次感谢!


我也是想实现他的这个功能,感谢热心人解答,谢谢大

评分

参与人数 1PB +2 收起 理由
tmplinshi + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2010-12-26 13:24:57 | 显示全部楼层
批处理真强大,但我不会用,请教各位了。
发表于 2010-12-26 14:10:08 | 显示全部楼层
原帖由 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"
发表于 2010-12-26 15:32:07 | 显示全部楼层
几个问题:
1、是否要保留文本中的空行及英文感叹号?
2、是否直接覆盖原文件,还是输出到另外一个目录?
3、多插入几个随机字符,是插入几个?
这个方案怎样:插入少于文本一半行数的随机字。比如有 100 行,那么插入随机字的数量介于 1~50 个。

[ 本帖最后由 tmplinshi 于 2010-12-26 15:36 编辑 ]
 楼主| 发表于 2010-12-26 19:39:59 | 显示全部楼层
几个问题:
1、是否要保留文本中的空行及英文感叹号?
2、是否直接覆盖原文件,还是输出到另外一个目录?
3、多插入几个随机字符,是插入几个?

1.不用
2.最好是别一个目录
3.是插入三到四句话,在123.txt中的,一行一句.
 楼主| 发表于 2010-12-26 19:40:49 | 显示全部楼层
原帖由 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>输出了。
 楼主| 发表于 2010-12-26 20:25:38 | 显示全部楼层
随风版主的才有用,他这个生成不了的,才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个就行了。。。

感谢大家的解答。提前祝元旦快乐。

评分

参与人数 1PB -2 收起 理由
Batcher -2 请编辑自己的帖子,把代码放到code标签里面 ...

查看全部评分

发表于 2010-12-26 21:23:53 | 显示全部楼层
  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. )
复制代码

评分

参与人数 1技术 +1 收起 理由
veek + 1 乐于助人

查看全部评分

 楼主| 发表于 2010-12-26 23:05:12 | 显示全部楼层
谢谢版主,实在是太给力了。
发表于 2011-9-11 10:32:38 | 显示全部楼层
回复 8# tmplinshi


    这个代码是实现了在文件以开头加入随机文本的功能,我想问一下,我如果要在文章任意位置随机的插入随机文本,这个功能能否实现呢?  谢谢
发表于 2011-9-11 12:07:27 | 显示全部楼层
回复 10# lydxliusun


可以实现,有问题的话建议单独发帖提问。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 00:17 , Processed in 0.023206 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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