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

批处理解汉诺塔会比较经典,

http://bathome.net/viewthread.php?tid=4892
见某一楼
  1. @echo off
  2. set /p inp="1-7: "
  3. call :next %inp% a c b
  4. pause
  5. :next
  6. if %1 equ 0 goto :eof
  7. set /a now=%1-1
  8. call :next %now% %2 %4 %3
  9. echo,%1 from  %2  to  %3
  10. set /a now=%1-1
  11. call :next %now% %4 %3 %2
复制代码

TOP

本帖最后由 523066680 于 2013-7-22 09:56 编辑

回复 5# CrLf


   可以不要setlocal和endlocal,call返回的时候重设一下%s%=%~1
call 的时候刚好可以用 %%var%%的方式所以可以去掉setlocal enabledelayedexpansion
  1. @echo off
  2. call:perm "1 2 3 4 5 6"
  3. pause
  4. :perm <"c1 c2 ..."> // code by plp
  5. set "s=%~1 "
  6. if "%s: =%" == ""  (echo %~2 &goto:eof)
  7. for %%b in (%~1) do (call:perm "%%s:%%b =%%" "%~2%%b" &set "s=%~1 ")
复制代码
1

评分人数

    • CrLf: 大湿++技术 + 1

TOP

返回列表