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

[文本处理] [已解决]请问批处理可以随机扩充让相邻字符不重复吗?

[复制链接]
发表于 2015-4-25 21:19:39 | 显示全部楼层 |阅读模式
本帖最后由 每天几分 于 2015-4-26 11:17 编辑

500字的txt文本,只有一行,且无重复字。
我想将这500字随机扩充到5万字,但要求相邻的字不能重复(即同字不相邻),且要求每个字出现的次数一样,请问批处理可以实现吗?
发表于 2015-4-25 22:15:10 | 显示全部楼层
貌似不难,分一百个区间,每个区间五百字,分别乱序,拼接输出
发表于 2015-4-25 23:10:23 | 显示全部楼层
本帖最后由 pcl_test 于 2015-4-26 11:21 编辑
  1. @echo off 2>nul 3>nul
  2. echo,正在处理……
  3. set /p str=<"测试.txt"
  4. (for /l %%i in (1 1 100)do call :loop %str%)>"结果.txt"
  5. echo,完成!
  6. pause & exit
  7. :loop
  8. setlocal enabledelayedexpansion
  9. set s=
  10. set /p t=<"%temp%\$"
  11. for /l %%a in (0 1 499)do (
  12. set "_!random!!str:~%%a,1!=!str:~%%a,1!"
  13. )
  14. for /f "tokens=1* delims==" %%b in ('set _')do set "s=!s!%%c"
  15. if "!t!" equ "!s:~,1!" goto loop
  16. >"%temp%\$" echo,!s:~-1!
  17. set /p=!s!<nul
  18. goto :eof
复制代码

评分

参与人数 1技术 +1 收起 理由
每天几分 + 1 谢谢

查看全部评分

发表于 2015-4-26 02:01:55 | 显示全部楼层
js + bat
  1. @if(0)==(0) echo off
  2. CScript -NoLogo -E:JScript %0 <a.txt > b.txt
  3. pause & exit
  4. @end
  5. var arr = WScript.StdIn.Readall().split('');
  6. var i =100, s = "";
  7. while(i--){
  8.    arr.sort(function(){ return 0.5 - Math.random(); });
  9.    arr = s.substr(s.length-1,1) === arr[0] ? arr.reverse() : arr;
  10.    s += arr.join('');
  11. }
  12. WSH.echo(s);
复制代码

评分

参与人数 1技术 +1 收起 理由
每天几分 + 1 谢谢

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 06:18 , Processed in 0.017391 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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