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

[数值计算] [已解决]批处理循环输出排列组合提示语法错误

请高手指点下我的代码哪里有问题,应该怎么改正。
  1. @echo off
  2. for /l %%i in (1 1 8) do (
  3. for /l %%j in (1 1 8) do (
  4. for /l %%k in (1 1 8) do (
  5. for /l %%l in (1 1 8) do (
  6. for /l %%m in (1 1 8) do (
  7. for /l %%n in (1 1 8) do (
  8. for /l %%o in (1 1 8) do (
  9. for /l %%p in (1 1 8) do (
  10. set /a a=%%i+%%j+%%k+%%l+%%m+%%n+%%o+%%p
  11. if not %a == 36 goto :next
  12. set /a b=%%i*%%j*%%k*%%l*%%m*%%n*%%o*%%p
  13. if not %b == 40320 goto :next
  14. echo %%i %%j %%k %%l %%m %%n %%o %%p
  15. :next
  16. )
  17. )
  18. )
  19. )
  20. )
  21. )
  22. )
  23. )
  24. pause
复制代码
这段代码是为了输出 1-8这8个数的全排列

[ 本帖最后由 firewolf85 于 2009-11-13 14:23 编辑 ]
1

评分人数

    • batman: 感谢主动给标题标注[已解决]字样PB + 2

感谢两位的热心帮助,二楼提出“echo hello  ::不可无内容”确实解决程序提示语法错误的问题,但是开启变量延迟后并没有解决最后正确结果的问题,希望各位大侠能有进一步的指点。或者说我这种思路在批处理中不能实现。三楼版主的代码试了,结果确实是我想要的,正在研究当中ING....

[ 本帖最后由 firewolf85 于 2009-11-13 13:56 编辑 ]

TOP

看来问题确实出在代码上,修改后的代码可以正确运行了,不过效率那个不怎么样。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1 1 8) do (
  3. for /l %%j in (1 1 8) do (
  4. for /l %%k in (1 1 8) do (
  5. for /l %%l in (1 1 8) do (
  6. for /l %%m in (1 1 8) do (
  7. for /l %%n in (1 1 8) do (
  8. for /l %%o in (1 1 8) do (
  9. for /l %%p in (1 1 8) do (
  10. set /a a=%%i+%%j+%%k+%%l+%%m+%%n+%%o+%%p
  11. set /a b=%%i*%%j*%%k*%%l*%%m*%%n*%%o*%%p
  12. if !a! ==36 if !b! == 40320 echo %%i %%j %%k %%l %%m %%n %%o %%p
  13. )
  14. )
  15. )
  16. )
  17. )
  18. )
  19. )
  20. )
  21. pause
复制代码

TOP

刚在调试修改,没看到版主的回覆,原来是这样子啊,谢谢斑竹指点。

TOP

返回列表