Board logo

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

作者: 每天几分    时间: 2015-4-25 21:19     标题: [已解决]请问批处理可以随机扩充让相邻字符不重复吗?

本帖最后由 每天几分 于 2015-4-26 11:17 编辑

500字的txt文本,只有一行,且无重复字。
我想将这500字随机扩充到5万字,但要求相邻的字不能重复(即同字不相邻),且要求每个字出现的次数一样,请问批处理可以实现吗?
作者: CrLf    时间: 2015-4-25 22:15

貌似不难,分一百个区间,每个区间五百字,分别乱序,拼接输出
作者: pcl_test    时间: 2015-4-25 23:10

本帖最后由 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
复制代码

作者: terse    时间: 2015-4-26 02:01

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);
复制代码





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