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

[其他] 【已结】同时赋多值,而分别执行的代码如何实现

@echo off
echo 1.x
echo 2.xx
echo 3.xxx
echo 4.xxxx
set /p n=请输入:
可以实现输入“123”后执行对应的123标签,而输入“124”执行下面124标签?
:x
:xx
:xxx
:xxxx

[ 本帖最后由 愚无尽 于 2009-2-23 13:21 编辑 ]

多谢管理,不是那样的效果。
我需要的是执行前,输入了多个变量值,根据多个值再继续执行。不是分别输入,分别执行。
例如:n输入了12,那么就分别执行标签1,标签2
           n输入了134 ,那么就分别执行标签,1、3、4
应该清楚了吧,这个有点难表达

[ 本帖最后由 愚无尽 于 2009-2-22 19:33 编辑 ]

TOP

@echo off
echo 1.x
echo 2.xx
echo 3.xxx
echo 4.xxxx
set /p n=请输入:
if n=12 就执行:x和:xx
if n=134 就执行 :x、:xxx、:xxxx
:x
:xx
:xxx
:xxxx

就是这种逻辑关系

TOP

回复 5楼 的帖子

经测试有错误,谢谢,再看看

TOP

回复 5楼 的帖子

非常感谢,有效,能不能简单分析一下。

TOP

原帖由 tireless 于 2009-2-22 20:20 发表
5楼已修改。忘记了给标签加冒号。。。

晕,我也不细心没注意看,感谢。
if "%n:~1,1%" neq "" call :%n:~1,1%
if "%n:~2,1%" neq "" call :%n:~2,1%
if "%n:~3,1%" neq "" call :%n:~3,1%

假如输入的字符串太多,这里的内容会过多,代码不够精简,是否可以采用 for循环命令实现?

TOP

对了,我的标签不是:1、:2、:3这样特定格式。
所以楼上的朋友,那个写法还是不能实现哈

[ 本帖最后由 愚无尽 于 2009-2-22 20:35 编辑 ]

TOP

回复 11楼 的帖子

标签数量远远超过了10个,所以应用起来不便。

TOP

回复 13楼 的帖子

这个案例就是为了执行时候的便捷,假如还去输入空格分开的话,失去意义了
用一般的输入一个单次值,单独执行就行了

TOP

回复 15楼 的帖子

执行的很多!比如:
if /i "%choice2%"=="A" goto optimize
if /i "%choice2%"=="B" goto Restore
if /i "%choice2%"=="C" goto ntfs
if /i "%choice2%"=="D" goto IE
if /i "%choice2%"=="E" goto virus
if /i "%choice2%"=="F" goto msdos
if /i "%choice2%"=="G" goto Drives
if /i "%choice2%"=="H" goto minfo
if /i "%choice2%"=="I" goto info
if /i "%choice2%"=="J" goto wmic
if /i "%choice2%"=="K" goto wd
if /i "%choice2%"=="L" goto bat
if /i "%choice2%"=="M" goto dy
if /i "%choice2%"=="N" goto set
if /i "%choice2%"=="O" goto ps
if /i "%choice2%"=="P" goto label
if /i "%choice2%"=="S" goto other
if /i "%choice2%"=="T" goto regsvr
if /i "%choice2%"=="U" goto mscon
if /i "%choice2%"=="V" goto 2000reg
if /i "%choice2%"=="W" goto 2000Restore
if /i "%choice2%"=="Q" goto killport
if /i "%choice2%"=="R" goto openport
if /i "%choice2%"=="Y" goto start

TOP

原帖由 batman 于 2009-2-22 23:24 发表
按楼主的要求模拟一段代码:@echo off
set /p choice=请选择项目(a b c):
:lp
if defined choice (
  set "a=%choice:~,1%"&set "choice=%choice:~1%"
  call,goto %%a%%
)
echo 所有项目都执行完毕&pause>nu ...

非常感谢版主,热心的帮助,代码实现了需要的功能。
这个代码本身可以逐一输入,逐一执行的。那么是否可以同时输入,分别执行?化繁为简,提高效率嘛,于是有了这个代码的需求!
举个例子吧:假如你想叫一个人帮你买手机、相机、U盘。我想你不会叫他手机买了回来后,再叫他去帮你买相机吧,相机买了以后再叫他买U盘吧?现实不可能如此,但是批处理执行的时候好多情况如此!所以告诉他要买的东西列表,一起买回来即可啦!(汗死,什么例子嘛,这么别扭!@¥[email=#@%]#@%[/email],没法好多批就是这么做的。。。所以有了这个思考!)

TOP

返回列表