标题: [文本处理] [已解决]批处理如何从文本随机抽出10个汉字,再乱序扩充? [打印本页]
作者: 每天几分 时间: 2015-3-10 21:29 标题: [已解决]批处理如何从文本随机抽出10个汉字,再乱序扩充?
本帖最后由 每天几分 于 2015-3-11 13:31 编辑
额,是这样的,最近在做一个单字手打字训练计划安排(只打单字),要用到批处理。
原文本a里面只有500个字,我需要从这500个字里面随机抽出10个字,再将这10个字随机乱序扩充到500个字,生成文本b,用文本b进行练习。请问该怎么实现?
谢谢楼下各位朋友的参与!
作者: apang 时间: 2015-3-10 23:05
- @set @n=0;//&cscript -nologo -e:jscript "%~0"<a.txt>b.txt & pause & exit
-
- txt = WScript.StdIn.ReadAll().replace(/\r?\n/g, "");
- arr = txt.split(""); a = [];
- for (i=0; i<10; i++) {
- n = Math.round(Math.random() * arr.length);
- for (j=0; j<50; j++) { a.push(arr[n]) };
- arr.splice(n, 1);
- }
- a.sort(function(){return Math.random()-0.5});
- WScript.Echo(a.join(""))
复制代码
作者: pcl_test 时间: 2015-3-10 23:12
本帖最后由 pcl_test 于 2015-3-10 23:25 编辑
回复 1# 每天几分 - @echo off
- setlocal enabledelayedexpansion
- set str=
- for /f "delims=" %%i in ('type "a.txt"') do set "str=!str!%%i"
- set s=
- for /l %%a in (0 1 9) do set /a r=!random!%%500 && set "s=!s!!r! "
- set t=
- for %%b in (!s!) do set "t=!t!!str:~%%b,1! "
- set u=
- for %%c in (!t!) do (
- set g=
- for /l %%j in (1 1 50) do set "g=!g!%%c"
- set u=!u!!g!
- )
- for /l %%z in (0 1 499) do set /a k=!random!%%500 && >>$ echo,!k!#!u:~%%z,1!
- set o=
- for /f "tokens=2 delims=#" %%e in ('sort $') do set o=!o!%%e
- >>10字乱序.txt echo,!o!
- del $
- pause
复制代码
作者: CrLf 时间: 2015-3-11 02:14
借 2 楼代码改下- @set @n=0;//&cscript -nologo -e:jscript "%~0"<a.txt & pause & exit
-
- txt = WScript.StdIn.ReadAll().replace(/\r?\n/g, "")
- arr = txt.split('').sort(function(){return Math.random()-0.5})
- WScript.Echo(arr.slice(0,10).join(''))
复制代码
作者: cobat 时间: 2015-3-11 10:43
- @echo off
- setlocal enabledelayedexpansion
- set/p i=<a.txt
- for /l %%a in (1,1,500) do set "_!random!_%%a=!i:~,1!"&set "i=!i:~1!"
- for /f "skip=490 tokens=2 delims==" %%a in ('set _') do set "j=!j!%%a"
- (for /l %%a in (1,1,500) do (
- set/a mod=!random!%%10
- for %%b in (!mod!) do <nul set/p=!j:~%%b,1!
- ))>b.txt
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |