[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何从文本随机抽出10个汉字,再乱序扩充?

本帖最后由 每天几分 于 2015-3-11 13:31 编辑

额,是这样的,最近在做一个单字手打字训练计划安排(只打单字),要用到批处理。
原文本a里面只有500个字,我需要从这500个字里面随机抽出10个字,再将这10个字随机乱序扩充到500个字,生成文本b,用文本b进行练习。请问该怎么实现?

谢谢楼下各位朋友的参与!

  1. @set @n=0;//&cscript -nologo -e:jscript "%~0"<a.txt>b.txt & pause & exit
  2. txt = WScript.StdIn.ReadAll().replace(/\r?\n/g, "");
  3. arr = txt.split(""); a = [];
  4. for (i=0; i<10; i++) {
  5.         n = Math.round(Math.random() * arr.length);
  6.         for (j=0; j<50; j++) { a.push(arr[n]) };
  7.         arr.splice(n, 1);
  8. }
  9. a.sort(function(){return Math.random()-0.5});
  10. WScript.Echo(a.join(""))
复制代码
1

评分人数

TOP

本帖最后由 pcl_test 于 2015-3-10 23:25 编辑

回复 1# 每天几分
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set str=
  4. for /f "delims=" %%i in ('type "a.txt"') do set "str=!str!%%i"
  5. set s=
  6. for /l %%a in (0 1 9) do set /a r=!random!%%500 && set "s=!s!!r! "
  7. set t=
  8. for %%b in (!s!) do set "t=!t!!str:~%%b,1! "
  9. set u=
  10. for %%c in (!t!) do (
  11. set g=
  12. for /l %%j in (1 1 50) do set "g=!g!%%c"
  13. set u=!u!!g!
  14. )
  15. for /l %%z in (0 1 499) do set /a k=!random!%%500 && >>$ echo,!k!#!u:~%%z,1!
  16. set o=
  17. for /f "tokens=2 delims=#" %%e in ('sort $') do set o=!o!%%e
  18. >>10字乱序.txt echo,!o!
  19. del $
  20. pause
复制代码
1

评分人数

    • apang: 乐于助人技术 + 1

TOP

借 2 楼代码改下
  1. @set @n=0;//&cscript -nologo -e:jscript "%~0"<a.txt & pause & exit
  2. txt = WScript.StdIn.ReadAll().replace(/\r?\n/g, "")
  3. arr = txt.split('').sort(function(){return Math.random()-0.5})
  4. WScript.Echo(arr.slice(0,10).join(''))
复制代码
1

评分人数

    • apang: 乐于助人技术 + 1

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set/p i=<a.txt
  4. for /l %%a in (1,1,500) do set "_!random!_%%a=!i:~,1!"&set "i=!i:~1!"
  5. for /f "skip=490 tokens=2 delims==" %%a in ('set _') do set "j=!j!%%a"
  6. (for /l %%a in (1,1,500) do (
  7.     set/a mod=!random!%%10
  8.     for %%b in (!mod!) do <nul set/p=!j:~%%b,1!
  9. ))>b.txt
  10. pause
复制代码
1

评分人数

    • apang: 乐于助人技术 + 1

TOP

返回列表