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

[文本处理] [已解决]批处理怎样将一行汉字随机打乱排序?

本帖最后由 每天几分 于 2015-3-9 20:52 编辑

最近需要练习打字,把一行选定的500字反复打,但这500字的顺序太过固定了,打多几次,人就有了预读反映,测不出真实打字速度,希望弄个批处理把这500字的顺序全部打乱。

注:只有一行,没有回车键。

如:的一了不在有个人这上中大为来我到出要以时……七支费父统府(这一行共500字,需要全部打乱)

谢谢楼下各位。

回复 8# 每天几分

嗯,这样
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in (a.txt) do (
  3.     set "str=%%i"
  4.     for /l %%a in (0 1 499) do (
  5.         set/a n=!random!%%(500-%%a^)
  6.         for %%b in (!n!) do set/p=!str:~%%b,1!<nul&set "u=!str:~%%b,1!"
  7.         for %%c in (!u!) do set "str=!str:%%c=!"
  8.     )
  9. )) >b.txt   
  10. pause
复制代码
每点击一次,重置一回b.txt文本中的内容。
1

评分人数

踏实一些点.不要着急.你想要的时间都会给你.2

TOP

回复 8# 每天几分


    3 楼和 7 楼都可以输出文件的吧,你这样说他们很伤心的

TOP

回复 6# 慕夜蓝化


    楼上各位,可以像2楼一样,顺手加个文本输出吗。。。。轻轻修改一下。。。。

TOP

本帖最后由 cobat 于 2015-3-10 11:00 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set "s=输入500字"
  3. for /l %%a in (1,1,500) do set _!random!_%%a=!s:~,1!&set s=!s:~1!
  4. (for /f "tokens=2 delims==" %%a in ('set _') do <nul set/p=%%a)>a.txt
  5. pause
复制代码

TOP

回复 5# CrLf

嗯嗯,我也改了一下
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set "str=%%i"
  4.     for /l %%a in (0 1 499) do (
  5.         set/a n=!random!%%(500-%%a^)
  6.         for %%b in (!n!) do set/p=!str:~%%b,1!<nul&set "u=!str:~%%b,1!"
  7.         for %%c in (!u!) do set "str=!str:%%c=!"
  8.     )
  9. )   
  10. pause
复制代码
这样就好了
踏实一些点.不要着急.你想要的时间都会给你.2

TOP

回复 4# 慕夜蓝化


    这样会重复吧,借兄台代码修改一个,不太考虑效率:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set "str=%%i"
  4.     for /l %%a in (0 1 500) do (
  5.         set/a n=!random!%%500 +%%a
  6.         for %%b in (!n!) do set/p=!str:~%%b,1!<nul
  7.         set str=!str:~%%a!!str:~,%%a!
  8.     )
  9. )   
  10. pause
复制代码

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set "str=%%i"
  4.     for /l %%a in (0 1 500) do (
  5.         set/a n=!random!%%500
  6.         call set/p=%%str:~!n!,1%%<nul
  7.     )
  8. )   
  9. pause
复制代码
踏实一些点.不要着急.你想要的时间都会给你.2

TOP

本帖最后由 pcl_test 于 2017-3-16 21:14 编辑

回复 1# 每天几分
第一行::后面的文字替换成你需要的文字就可以
  1. ::丽的转身作文字上善若水利万物而不争李白的抽刀断水水更流证明了水的至韧水滴石穿再顽强的青石也经不起水滴日复一日的侵蚀水是至刚至柔之物但是水流经高山峡谷会千回万转在迂回之间前行水在一次次的转身中走的更远转身是一种生活方式给心灵找个栖息地陶渊明是那个采菊东篱下悠然见南山的隐士他不愿为五斗米折腰毅然放弃仕途转身归隐田园才有了流传至今的桃花源他给我们展现了一份清高傲骨盛唐李太白意气风发有远大的政治抱负当他大呼仰天大笑出门去我辈岂是蓬蒿人时政治上遭到了不如意李白仍能举杯畅饮转身任清风洗涤心胸随月辉起舞弄影为世人留下以为衣袂飘扬的诗仙形象转身是一种人格伟大不屈的体现在中国这头东方雄狮沉睡之时人民海聚家鲁迅发现只有唤醒人民的思想才能拯救国家他坚决弃医从文拿起笔杆发誓要用笔唤醒中国魂他为了振兴民族放弃了个人理想在那个时代是何等的伟大众里寻他千百度蓦然回首那人却在灯火阑珊处多么美丽的转身学会转身等待你的是一片海阔天空熊熊烈火之中消防员背起伤员一次次冲出又一次次转身冲入火海汶川地震战士们一次次的转生救出一个个奄奄一息的生命面对歹徒高三学生临危不惧与歹徒作斗争他忘记了重要的高考抓住了歹徒身负重伤正是社会上草呢
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. color a
  5. set str=
  6. set /p str=<"%~f0"
  7. set "str=%str:~2%"
  8. (for /l %%a in (0 1 499) do set /a r=!random!%%500 &&echo,!r!_%%a#!str:~%%a,1!)>$
  9. set s=
  10. for /f "tokens=1* delims=#" %%b in ('sort $') do set s=!s!%%c
  11. ::要输出到文本,下面一句改为>>"乱序.txt" echo;!s!
  12. echo;!s!
  13. del $
  14. echo.
  15. pause
复制代码
1

评分人数

TOP

  1. 1>1/* :
  2. @echo off
  3. cscript -nologo -e:jscript %0 <a.txt >b.txt
  4. pause & exit /b
  5. */
  6. var text = WScript.StdIn.ReadAll()
  7. var ar = text.split('').sort(function(){return Math.random()-0.5})
  8. WScript.Echo(ar.join(''))
复制代码
1

评分人数

TOP

返回列表