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

[文本处理] [已解决]三个随机数文本的行字符,组合为名字的批处理?

[复制链接]
发表于 2025-4-18 11:24:17 | 显示全部楼层 |阅读模式
1.txt




复制代码
2.txt




复制代码
3.txt




复制代码
抄写的77七批处理
http://www.bathome.net/viewthread.php?tid=66385&highlight=
早晨.bat

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('type "早晨.txt"') do (
  4.         set /a n+=1
  5.         set "#!n!=%%a"
  6. )
  7. set /a m=%random% %% %n% + 1
  8. echo !#%m%!
  9. endlocal
  10. pause
复制代码
改为
姓名.bat

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :0
  4. for /f "delims=" %%a in ('type "1.txt"') do (
  5. for /f "delims=" %%b in ('type "2.txt"') do (
  6. for /f "delims=" %%c in ('type "3.txt"') do (
  7.         set /a n+=1
  8.         set "#!n!=%%a%%b%%c"
  9. )))
  10. set /a m=%random% %% %n% + 1
  11. echo !#%m%!
  12. pause
  13. goto:0
  14. endlocal
  15. pause



  16. 孙立国
  17. 请按任意键继续. . .
  18. 孙建家
  19. 请按任意键继续. . .
  20. 赵立星
  21. 请按任意键继续. . .

复制代码
但是这种随机叠加的批处理太慢了,求加快速度的批处理。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2025-4-18 12:47:21 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-4-18 21:18 编辑

回复 1# zzz19760225

  1. @echo off &setlocal enabledelayedexpansion
  2. set "n1=0" &for /f "delims=" %%v in (1.txt) do set/a "n1+=1"&set "_1!n1!=%%v"
  3. set "n2=0" &for /f "delims=" %%v in (2.txt) do set/a "n2+=1"&set "_2!n2!=%%v"
  4. set "n3=0" &for /f "delims=" %%v in (3.txt) do set/a "n3+=1"&set "_3!n3!=%%v"
  5. :#loop#
  6.    set/a a=!random!%%!n1!+1
  7.    set/a b=!random!%%!n2!+1
  8.    set/a c=!random!%%!n3!+1
  9.    echo,!_1%a%!!_2%b%!!_3%c%!
  10.    set/p "loop=直接回车键》下一个 其余键》退出:"
  11.    if defined loop (exit/b) else (goto #loop#)
复制代码

评分

参与人数 1技术 +1 收起 理由
zzz19760225 + 1 多谢,这种还方便增减单元。

查看全部评分

发表于 2025-4-18 13:51:13 | 显示全部楼层
将第3行的
:0
移到第9行的
)))
之后 ,这样就不用每次goto都读取并设置了

评分

参与人数 1技术 +1 收起 理由
zzz19760225 + 1 可行,开始一个慢全读取,后面就正常了。

查看全部评分

 楼主| 发表于 2025-4-18 19:33:18 | 显示全部楼层
本帖最后由 zzz19760225 于 2025-4-18 20:04 编辑

感谢两位解答。
请问,如果要调用的话,需要怎么写啊
我这写的不能正常运行,用通义问的结果也无法正常运行,都是系统找不到for开始三个字。

  1. @echo off
  2. :0
  3. set /p nc=:
  4. if exist %nc% (set a=%nc%) else (call:1)
  5. echo:%a%
  6. goto:0
  7. pause&exit

  8. :1
  9. setlocal enabledelayedexpansion
  10. set "n1=1" &for /f "delims=," %%v in (张,王,赵,李,钱) do set/a "n1+=1"&set "_1!n1!=%%v"
  11. set "n2=1" &for /f "delims=," %%v in (中,华,富,强) do set/a "n2+=1"&set "_2!n2!=%%v"
  12. set "n3=1" &for /f "delims=," %%v in (万,世,太,平) do set/a "n3+=1"&set "_3!n3!=%%v"
  13.    set/a a=%random%%%!n1!+1
  14.    set/a b=%random%%%!n2!+1
  15.    set/a c=%random%%%!n3!+1
  16.    set z=!_1%a%!!_2%b%!!_3%c%!
  17. set a=!z!
  18. exit/b

  19. :1
  20. 系统找不到文件 张。
  21. 系统找不到文件 中。
  22. 系统找不到文件 万。
  23. :
复制代码
发表于 2025-4-18 20:09:27 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-4-18 21:27 编辑

回复 4# zzz19760225

参考以下版本修正你的4楼代码...

  1. @echo off &setlocal enabledelayedexpansion
  2. :#l1
  3. call :#l2
  4. echo,!z!
  5. set/p "loop=直接回车键》下一个 其余键》退出:"
  6. if defined loop (exit/b) else (goto #l1)

  7. :#l2
  8. set "n1=0" &for %%v in (张,王,赵,李,钱) do set/a "n1+=1"&set "_1!n1!=%%v"
  9. set "n2=0" &for %%v in (中,华,富,强) do set/a "n2+=1"&set "_2!n2!=%%v"
  10. set "n3=0" &for %%v in (万,世,太,平) do set/a "n3+=1"&set "_3!n3!=%%v"
  11. set/a a=!random!%%!n1!+1
  12. set/a b=!random!%%!n2!+1
  13. set/a c=!random!%%!n3!+1
  14. set "z=!_1%a%!!_2%b%!!_3%c%!"
  15. exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
zzz19760225 + 1 感谢,可以调用。我明天试试标签里装变量延 ...

查看全部评分

 楼主| 发表于 2025-4-19 15:57:01 | 显示全部楼层
本帖最后由 zzz19760225 于 2025-4-19 16:10 编辑

回复 5# aloha20200628

  1. @echo off
  2. set a=1
  3. echo:1:%a%
  4. setlocal enabledelayedexpansion
  5. set a=2
  6. echo:2:!a!
  7. endlocal
  8. echo:3:!a!
  9. echo:4:%a%
  10. pause&exit

  11. 1:1
  12. 2:2
  13. 3:!a!
  14. 4:1
  15. 请按任意键继续. . .
复制代码
请问大佬,变量延迟的局部变量值echo:2:!a!,如何转化为全局环境变量值呢?
发表于 2025-4-19 16:43:10 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-4-19 16:59 编辑

回复 6# zzz19760225

运行以下版本可体会 ‘!var!变量如何续命给%var%变量’ ...

  1. @echo off
  2. set a=1
  3. echo,1:a=%a%
  4. setlocal enabledelayedexpansion
  5. set a=2
  6. echo,2:a=!a!,%a%
  7. endlocal &set b=%a%
  8. echo,4:a=%a%,b=%b%
  9. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
zzz19760225 + 1 乐于助人,非常感谢!

查看全部评分

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

本版积分规则

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

GMT+8, 2026-3-17 07:23 , Processed in 0.019311 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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