Board logo

标题: [文件操作] 请帮忙简化这段批处理 [打印本页]

作者: tc28156347    时间: 2008-9-15 12:16     标题: 请帮忙简化这段批处理

  1. @echo off
  2. color 6a
  3. title 复杂的程序不是好程序!好用的程序才是好程序!BY电信2班生活委员~
  4. echo 倒霉孩子!!!玩了一节课?没做作业??&pause>nul
  5. echo 那就让我帮你做作业吧~&pause>nul
  6. echo 谢谢我吧,哈哈&pause>nul&cls
  7. :bof
  8. cls
  9. echo ***********************************************
  10. echo **************选择功能*************************
  11. echo ***********************************************
  12. echo 可选功能:
  13. echo 1.大学计算机基础实验1
  14. echo 0.退出
  15. set /p choose=请选择
  16. cls
  17. if "%choose%"=="0" echo 做完了??那886&pause>nul&exit
  18. if "%choose%"=="1" (goto a) else (goto b)
  19. :a
  20. cls
  21. echo ************************************************
  22. echo 1.大学计算机基础实验1
  23. echo ************************************************
  24. echo a.电子信息工程
  25. echo b.通讯工程
  26. echo c.电子科学与技术
  27. echo d.自动化
  28. set /p h=请输入班名
  29. if "%h%"=="a" goto dx
  30. if "%h%"=="b" goto tx
  31. if "%h%"=="c" goto dk
  32. if "%h%"=="d" goto zd
  33. echo 不存在的班号&pause>nul&goto a
  34. :dx
  35. set /p n=请输入班号
  36. md 电子信息工程%n%班 2>nul
  37. cd 电子信息工程%n%班
  38. goto step
  39. :tx
  40. set /p g=请输入班号
  41. md 通讯工程%g%班 2>nul
  42. cd 通讯工程%g%班
  43. goto step
  44. :dk
  45. set /p g=请输入班号
  46. md 电子科学与技术%g%班 2>nul
  47. cd 电子科学与技术%g%班
  48. goto step
  49. :zd
  50. set /p g=请输入班号
  51. md 自动化%g%班 2>nul
  52. cd 自动化%g%班
  53. goto step
  54. :step
  55. set /p name=请输入姓名
  56. set /p other=请输入学号
  57. md %other%-%name%
  58. cd ..
  59. echo 完成,任意键返回 &pause>nul&cls
  60. goto bof
  61. :b
  62. echo 功能不存在,任意键返回&pause>nul
  63. goto bof
复制代码
关键是
  1. echo a.电子信息工程
  2. echo b.通讯工程
  3. echo c.电子科学与技术
  4. echo d.自动化
  5. set /p h=请输入班名
  6. if "%h%"=="a" goto dx
  7. if "%h%"=="b" goto tx
  8. if "%h%"=="c" goto dk
  9. if "%h%"=="d" goto zd
  10. echo 不存在的班号&pause>nul&goto a
  11. :dx
  12. set /p n=请输入班号
  13. md 电子信息工程%n%班 2>nul
  14. cd 电子信息工程%n%班
  15. goto step
  16. :tx
  17. set /p g=请输入班号
  18. md 通讯工程%g%班 2>nul
  19. cd 通讯工程%g%班
  20. goto step
  21. :dk
  22. set /p g=请输入班号
  23. md 电子科学与技术%g%班 2>nul
  24. cd 电子科学与技术%g%班
  25. goto step
  26. :zd
  27. set /p g=请输入班号
  28. md 自动化%g%班 2>nul
  29. cd 自动化%g%班
  30. goto step
  31. :step
  32. set /p name=请输入姓名
  33. set /p other=请输入学号
  34. md %other%-%name%
  35. cd ..
  36. echo 完成,任意键返回 &pause>nul&cls
  37. goto bof
复制代码
这一段,群里的高手说能用FOR命令简化,可是我不太会。 其他的部分要是能简化也好,希望大家帮帮我 我是新手,不太懂规矩,但是真心想学批处理,希望大家帮助我 ************************************************** 版务执行:Batcher 执行时间:2008-09-15 操作内容:加code标签 友情提示:
本版规则 1、求代码、寻求代码解释、探讨代码得失的帖子均可发在本版块,其余话题禁止在本版讨论; 2、求助时,务必在顶楼一次性把问题交代清楚;若文字难以表述,请配图说明,或是上传附件;但是,一切操作应从节约论坛资源的角度出发,能文字说明清楚的就无需再发图片,小图能说明问题的尽量不截全图,在不影响效果的前提下尽量压缩图片及附件; 3、所发代码若不止一行,请务必用code标记把代码部分首尾括起来,以便他人复制;
**************************************************
[ 本帖最后由 Batcher 于 2008-9-15 12:40 编辑 ]
作者: tc28156347    时间: 2008-9-15 12:17

这只是一部分,其他的我还正在写
作者: namejm    时间: 2008-9-15 12:22

  最好是用文字来描述你的意图,而不是用代码,因为代码并不完全正确,不能让别人准确领会你的意图。
作者: tc28156347    时间: 2008-9-15 12:26

echo a.电子信息工程
echo b.通讯工程
echo c.电子科学与技术
echo d.自动化
set /p h=请输入班名
if "%h%"=="a" goto dx
if "%h%"=="b" goto tx
if "%h%"=="c" goto dk
if "%h%"=="d" goto zd
echo 不存在的班号&pause>nul&goto a
:dx
set /p n=请输入班号
md 电子信息工程%n%班 2>nul
cd 电子信息工程%n%班
goto step
:tx
set /p g=请输入班号
md 通讯工程%g%班 2>nul
cd 通讯工程%g%班
goto step
:dk
set /p g=请输入班号
md 电子科学与技术%g%班 2>nul
cd 电子科学与技术%g%班
goto step
:zd
set /p g=请输入班号
md 自动化%g%班 2>nul
cd 自动化%g%班
goto step
:step
set /p name=请输入姓名
set /p other=请输入学号
md %other%-%name%
cd ..
echo 完成,任意键返回 &pause>nul&cls
goto bof

此段过于冗杂
:dx        :tx        :dk         :zd
四处标签内容其实大致一样

这样说能明白么...
作者: namejm    时间: 2008-9-15 12:32

  还是把你的意图放到顶楼去吧,别人一般是在顶楼查看你的要求,要让别人到后面来找的话,你就等着别人抓狂吧。

  实际上,你并没有把自己确切的意图告诉别人:想要实现什么样的功能?代码流程怎么走?虽然别人看代码也能大致了解一部分,可是,简洁的文字描述比臃肿的代码更能让别人迅速找到问题所在,要让别人从一大堆代码中揣测你的意图,对别人是种折磨。

  最新要求还是在顶楼更新吧。
作者: tc28156347    时间: 2008-9-15 13:54

我不会啊 。。。。。
作者: everest79    时间: 2008-9-15 15:27

  1. set str=a.电子信息工程 b.通讯工程 c.电子科学与技术 d.自动化
  2. for %%i in (%str%) do (
  3. for /f "tokens=1,2 delims=." %%a in ("%%i") do (
  4. echo %%a %%b
  5. set %%a=%%b
  6. )
  7. )
  8. set /p h=请输入班名:
  9. if not defined %h% (echo 不存在的班号&pause>nul&goto a)
  10. call :input %%%h%%%
  11. goto bof
  12. :input
  13. set /p uuu=请输入班号:
  14. md %~1%uuu%班
  15. set /p hhh=请输入姓名:
  16. set /p bbb=请输入学号:
  17. md %~1%uuu%班\%hhh%-%bbb%
  18. echo 完成,任意键返回 &pause>nul&cls
  19. goto :eof
复制代码

[ 本帖最后由 everest79 于 2008-9-15 17:48 编辑 ]
作者: shqf    时间: 2008-9-15 16:47

楼主所说的问题可以用变量嵌套来解决,如下:
  1. @echo off
  2. :a
  3. cls
  4. set a=电子信息工程&set b=通讯工程&set c=电子科学与技术&set d=自动化
  5. echo a.%a%
  6. echo b.%b%
  7. echo c.%c%
  8. echo d.%d%
  9. set /p h=请输入班名:
  10. if "%h%" geq "a"  (if "%h%" leq "d" goto main)
  11. echo 不存在的班名&pause>nul&goto a
  12. :main
  13. set /p n=请输入班号
  14. call md %%%h%%%%n%班>nul
  15. call cd %%%h%%%%n%班
  16. set /p name=请输入姓名
  17. set /p other=请输入学号
  18. md %other%-%name%
  19. cd ..
  20. echo 完成,任意键返回 &pause>nul&cls
  21. goto :eof
复制代码

[ 本帖最后由 shqf 于 2008-9-15 19:55 编辑 ]




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2