标题: [文件操作] 请帮忙简化这段批处理 [打印本页]
作者: tc28156347 时间: 2008-9-15 12:16 标题: 请帮忙简化这段批处理
- @echo off
- color 6a
- title 复杂的程序不是好程序!好用的程序才是好程序!BY电信2班生活委员~
- echo 倒霉孩子!!!玩了一节课?没做作业??&pause>nul
- echo 那就让我帮你做作业吧~&pause>nul
- echo 谢谢我吧,哈哈&pause>nul&cls
- :bof
- cls
- echo ***********************************************
- echo **************选择功能*************************
- echo ***********************************************
- echo 可选功能:
- echo 1.大学计算机基础实验1
- echo 0.退出
- set /p choose=请选择
- cls
- if "%choose%"=="0" echo 做完了??那886&pause>nul&exit
- if "%choose%"=="1" (goto a) else (goto b)
- :a
- cls
- echo ************************************************
- echo 1.大学计算机基础实验1
- echo ************************************************
- 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
- :b
- echo 功能不存在,任意键返回&pause>nul
- goto bof
复制代码
关键是- 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
复制代码
这一段,群里的高手说能用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
- set str=a.电子信息工程 b.通讯工程 c.电子科学与技术 d.自动化
- for %%i in (%str%) do (
- for /f "tokens=1,2 delims=." %%a in ("%%i") do (
- echo %%a %%b
- set %%a=%%b
- )
- )
- set /p h=请输入班名:
- if not defined %h% (echo 不存在的班号&pause>nul&goto a)
- call :input %%%h%%%
- goto bof
-
- :input
- set /p uuu=请输入班号:
- md %~1%uuu%班
- set /p hhh=请输入姓名:
- set /p bbb=请输入学号:
- md %~1%uuu%班\%hhh%-%bbb%
- echo 完成,任意键返回 &pause>nul&cls
- goto :eof
复制代码
[ 本帖最后由 everest79 于 2008-9-15 17:48 编辑 ]
作者: shqf 时间: 2008-9-15 16:47
楼主所说的问题可以用变量嵌套来解决,如下:- @echo off
- :a
- cls
- set a=电子信息工程&set b=通讯工程&set c=电子科学与技术&set d=自动化
- echo a.%a%
- echo b.%b%
- echo c.%c%
- echo d.%d%
-
- set /p h=请输入班名:
- if "%h%" geq "a" (if "%h%" leq "d" goto main)
- echo 不存在的班名&pause>nul&goto a
-
- :main
- set /p n=请输入班号
- call md %%%h%%%%n%班>nul
- call cd %%%h%%%%n%班
- set /p name=请输入姓名
- set /p other=请输入学号
- md %other%-%name%
- cd ..
- echo 完成,任意键返回 &pause>nul&cls
- goto :eof
复制代码
[ 本帖最后由 shqf 于 2008-9-15 19:55 编辑 ]
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |