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

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

比如
@echo off

   xxx  (
这里是个循环

goto:1
xxx
:1
删除xxx
exit

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

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

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

评分人数

    • zm900612: 请把超过一行的代码用code括起来PB -2

start /b+临时文件
搜索”按任意键和倒计时退出“
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

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!\"
复制代码

TOP

to:zm900612
那个,应该不算代码....

TOP

本帖最后由 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

评分人数

一路飘过的鸟~~~

TOP

看了半天,你是要求这样呢,简单:
  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

评分人数

寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

感谢各位的回答!

TOP

本帖最后由 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
2

评分人数

TOP

4# comicguests


我认为一般来说符合编程语法的就是代码
话说我也不想老扣你分,让别人感觉咱俩有仇似的,但是版规如此,木油办法啊,只好得罪了,见谅

TOP

9# zm900612


原来如此,
了解!!

TOP

返回列表