找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26875|回复: 9

[文件操作] [已解决]可不可以强制跳转批处理(即使正在运行中)?

[复制链接]
发表于 2011-7-10 20:35:20 | 显示全部楼层 |阅读模式
比如
@echo off

   xxx  (
这里是个循环

goto:1
xxx
:1
删除xxx
exit

就是类似上面的东西
中间的循环中有让用户输入某些字符才可以继续,比如文件夹名
但并不能跳出循环

问题是:
当需要我填入字符时,如果我填入特定字符,比如abcd,
他就可以跳出循环执行  :1

如cmd窗口内显示:
      请输入文件夹名:abcd
    正在删除xxx

评分

参与人数 1PB -2 收起 理由
zm900612 -2 请把超过一行的代码用code括起来

查看全部评分

发表于 2011-7-10 21:58:40 | 显示全部楼层
start /b+临时文件
搜索”按任意键和倒计时退出“
 楼主| 发表于 2011-7-11 08:50:48 | 显示全部楼层
2# cjiabing


不明白....
请问,
具体要怎么做呢?
如果用以下代码:
  1. SetLocal EnableDelayedExpansion
  2.    For /R %%a In (*.mp4 *.rmvb *.mkv) Do (
  3.    Set "Str=%%~nxa"
  4.     SetLocal&Cls
  5.     Echo 视频文件:%%~nxa&Echo,
  6.     For /f "Delims=" %%b In ('Dir /ad /b F:\视频') Do (
  7.       Set /A Num+=1,Number+=1&Set ".!Num!=F:\视频\%%b"
  8.       Set "Str=000!Num!"&Set "Var=%%b                    "
  9.       Set /P=[!Str:~-3!]!Var:~,20!<nul
  10.       If "!Number!" EQU "2" Echo,&Set /A Number=0
  11.     )
  12.     Echo,&Set "Str="&Set /P Str=请选择文件夹:
  13.     For %%b in (!Str!) do Echo !.%%b!>tem
  14.     EndLocal
  15.     Set /p Str=<tem&Del tem
  16.     Echo,&Set "Var="&Set /P Var=A,直接建立文件夹 D,打开子文件夹:
  17.     If /i "!Var!" EQU "D" (
  18.       SetLocal&Cls
  19.       Echo 视频文件:%%~nxa&Echo,
  20.       For /F "Delims=" %%b In ('Dir /s /ad /b "!Str!"') Do (
  21.         Set /A Num+=1,Number+=1&Set ".!Num!=%%b"
  22.         Set "Str1=000!Num!"&Set "Var=%%b                    "
  23.         Set /P=[!Str1:~-3!]!Var:~,20!<nul
  24.         If "!Number!" EQU "2" Echo,&Set /A Number=0
  25.       )
  26.       Echo,&Set "Str="&Set /P Str=请选择文件夹:
  27.       For %%b in (!Str!) do Echo !.%%b!>tem
  28.       EndLocal
  29.       Set /p Str=<tem&Del tem
  30.     )  
  31.       SetLocal&Cls
  32.       Echo 视频文件:%%~nxa&Echo,
  33.     Set /P Name=所选文件夹是!Str!,请输入新文件夹名:
  34.     If Not Exist "!Str!\!Name!" Md "!Str!\!Name!"
  35.     Move "%%a" "!Str!\!Name!"
复制代码
 楼主| 发表于 2011-7-11 08:52:26 | 显示全部楼层
to:zm900612
那个,应该不算代码....
发表于 2011-7-11 08:58:56 | 显示全部楼层
本帖最后由 ArdentMan 于 2011-7-11 10:27 编辑

你想在哪个For循环中中止程序就在这个For循环的Set /P 这一句中加入退出,
如将Echo,&Set "Str="&Set /P Str=请选择文件夹:这一句改为:

  1. Echo,&Set "Str="&Set /P Str=请选择文件夹(输入Z退出程序):
  2. If /i "!Str!" EQU "Z" Exit
复制代码

评分

参与人数 1技术 +1 收起 理由
comicguests + 1 就是这个~

查看全部评分

发表于 2011-7-11 09:04:50 | 显示全部楼层
看了半天,你是要求这样呢,简单:

  1. :Loop
  2. set a=
  3. set /p a=输入:
  4. cls
  5. lf /i %a%==abcd (goto ok) else (echo 输入有误)

  6. goto Loop

  7. :ok
  8. echo 恭喜你跳出来了
  9. Pause
复制代码

评分

参与人数 1技术 +1 收起 理由
comicguests + 1 感谢

查看全部评分

 楼主| 发表于 2011-7-11 10:26:09 | 显示全部楼层
感谢各位的回答!
发表于 2011-7-11 13:35:11 | 显示全部楼层
本帖最后由 Hello123World 于 2011-7-11 13:47 编辑
  1. @echo off
  2. :Loop
  3. choice /c:ab /m "input a or b "
  4. cls
  5. if errorlevel 2 (goto no)
  6. if errorlevel 1 (goto ok)

  7. ::choice命令的好处是不用回车,选项也可以自定义,坏处是必须结合goto使用,这里a对应返回值1,b对应返回值2,如有多余2个的选择,依此类推。
  8. goto Loop

  9. :ok
  10. echo 恭喜你跳出来了
  11. Pause
  12. exit
  13. pause>nul

  14. :no
  15. echo 恭喜跳到no
  16. pause
复制代码
6楼的if是个Lf

评分

参与人数 2PB +2 技术 +1 收起 理由
comicguests + 1 多谢,受教了!!
zm900612 + 2 乐于助人

查看全部评分

发表于 2011-7-11 16:55:45 | 显示全部楼层
4# comicguests


我认为一般来说符合编程语法的就是代码
话说我也不想老扣你分,让别人感觉咱俩有仇似的,但是版规如此,木油办法啊,只好得罪了,见谅
 楼主| 发表于 2011-7-12 11:25:06 | 显示全部楼层
9# zm900612


原来如此,
了解!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 15:33 , Processed in 0.023640 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表