中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-02 02:24
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 一个嵌套问题? 查看 1,599 回复 10
楼 主 一个嵌套问题? 发表于 2006-08-04 19:35 ·  中国 江苏 苏州 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
我的是for(
...

里面嵌套
if A(
...
)

但是
for(
...
if A(
...
) <-------跳出

if B(
...
)

的时候,在那个地方跳出。
2 发表于 2006-08-04 22:09 ·  中国 广东 云浮 电信
荣誉版主
★★★
积分 718
发帖 313
注册 2005-09-26 00:00
20年会员
UID 42844
性别 男
状态 离线
for * (
...
if a (
..
goto :XX
)else(
..
goto :YY
)

)

[ Last edited by 220110 on 2006-8-4 at 22:54 ]
3 发表于 2006-08-11 20:21 ·  中国 江苏 苏州 吴江区 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
谢谢版主
,请问你的意思是不是在第一套()前面加*号?
4 想用bat生成如下代码 发表于 2006-08-11 20:22 ·  中国 江苏 苏州 吴江区 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
%rm% -i "01.rmvb" -o "A01.ra" -s -e
%rm% -i "01.rmvb" -o "B01.ra" -s -e
%rm% -i "A01.ra" -i "B01.ra" -o "01.rm" -t "" -a "" -c "" -C "" -q "" -n "" -R ""
if exist 01.rm (del /f /q 01.rmvb & del /f /q ?01.ra)

%rm% -i "02.rmvb" -o "A02.ra" -s -e
%rm% -i "02.rmvb" -o "B02.ra" -s -e
%rm% -i "A02.ra" -i "B02.ra" -o "02.rm" -t "" -a "" -c "" -C "" -q "" -n "" -R ""
if exist 02.rm (del /f /q 02.rmvb & del /f /q ?02.ra)

%rm% -i "03.rmvb" -o "A03.ra" -s -e
%rm% -i "03.rmvb" -o "B03.ra" -s -e
%rm% -i "A03.ra" -i "B03.ra" -o "03.rm" -t "" -a "" -c "" -C "" -q "" -n "" -R ""
if exist 03.rm (del /f /q 03.rmvb & del /f /q ?03.ra)

%rm% -i "04.rmvb" -o "A04.ra" -s -e
%rm% -i "04.rmvb" -o "B04.ra" -s -e
%rm% -i "A04.ra" -i "B04.ra" -o "04.rm" -t "" -a "" -c "" -C "" -q "" -n "" -R ""
if exist 04.rm (del /f /q 04.rmvb & del /f /q ?04.ra)

%rm% -i "05.rmvb" -o "A05.ra" -s -e
%rm% -i "05.rmvb" -o "B05.ra" -s -e
%rm% -i "A05.ra" -i "B05.ra" -o "05.rm" -t "" -a "" -c "" -C "" -q "" -n "" -R ""
if exist 05.rm (del /f /q 05.rmvb & del /f /q ?05.ra)

%rm% -i "06.rmvb" -o "A06.ra" -s -e
%rm% -i "06.rmvb" -o "B06.ra" -s -e
%rm% -i "A06.ra" -i "B06.ra" -o "06.rm" -t "" -a "" -c "" -C "" -q "" -n "" -R ""
if exist 06.rm (del /f /q 06.rmvb & del /f /q ?06.ra)

%rm% -i "07.rmvb" -o "A07.ra" -s -e
%rm% -i "07.rmvb" -o "B07.ra" -s -e
%rm% -i "A07.ra" -i "B07.ra" -o "07.rm" -t "" -a "" -c "" -C "" -q "" -n "" -R ""
if exist 07.rm (del /f /q 07.rmvb & del /f /q ?07.ra)

%rm% -i "08.rmvb" -o "A08.ra" -s -e
%rm% -i "08.rmvb" -o "B08.ra" -s -e
%rm% -i "A08.ra" -i "B08.ra" -o "08.rm" -t "" -a "" -c "" -C "" -q "" -n "" -R ""
if exist 08.rm (del /f /q 08.rmvb & del /f /q ?08.ra)

%rm% -i "09.rmvb" -o "A09.ra" -s -e
%rm% -i "09.rmvb" -o "B09.ra" -s -e
%rm% -i "A09.ra" -i "B09.ra" -o "09.rm" -t "" -a "" -c "" -C "" -q "" -n "" -R ""
if exist 09.rm (del /f /q 09.rmvb & del /f /q ?09.ra)
5 批处理如下: 发表于 2006-08-11 20:23 ·  中国 江苏 苏州 吴江区 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
for /L %%i in (1,1,9) do (
@echo %%rm%% -i "0%%i.rmvb" -o "a0%%i.ra" -s -e >>rr.bat
@echo %%rm%% -i "0%%i.rmvb" -o "b0%%i.ra" -s -e >>rr.bat
@echo %%rm%% -i "a0%%i.ra" -i "b0%%i.ra" i -o "0%%i.rm" -t "" -a "" -c "" -c "" -q "" -n "" -R "" >>rr.bat
@echo if exist 0%%i.rm (del /f /q 0%%i.rmvb & del /f /q ?0%%i.ra) >>rr.bat
@echo.>>rr.bat
@echo.>>rr.bat
)
6 发表于 2006-08-11 20:25 ·  中国 江苏 苏州 吴江区 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
但是问题之一就是嵌套挂号,
还有个问题就是如何用echo 输出“&”,”%&“好像无效。

版主的*号好像加入报错,goto :xx我也看不大明白。
我比较菜,还请多指示啊。
7 发表于 2006-08-14 20:37 ·  中国 江苏 苏州 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
大大们呢??
8 发表于 2006-08-19 23:33 ·  中国 江苏 苏州 吴江区 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
最后再顶一下,看来是没希望了。
9 发表于 2006-08-22 03:37 ·  中国 山西 运城 联通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线

───────────────── 版务记录 ─────────────────
执行:Will Sort
操作:移动主题:自《DOS疑難解答 & 問題討論 (解答室)》
说明:依照主题内容分类,更适合于发表在此版区
处罚:扣除因发表该主题而奖励的6点积分,扣除标题违规惩罚性2点积分
───────────────── 版务记录 ─────────────────


Re mrhjzhang:

一楼的问题大约是你的if A() 中再度出现了 () 却没有正常转义。

四五六楼的问题关键在于转义字符 ^ ,echo & | < > ( ) 等特殊字符时需使用这个自负作前缀。

@echo if exist 0%%i.rm (del /f /q 0%%i.rmvb & del /f /q ?0%%i.ra) >>rr.bat

可改为:

echo if exist 0%%i.rm ^(del /f /q 0%%i.rmvb ^& del /f /q ?0%%i.ra^) >>rr.bat

或者:

echo if exist 0%%i.rm del /f /q 0%%i.rmvb ^& del /f /q ?0%%i.ra >>rr.bat

[ Last edited by willsort on 2006-8-22 at 03:48 ]
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
10 发表于 2006-09-06 08:33 ·  中国 江苏 苏州 吴江区 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
不好意思,嵌套本来就可以,是我某些部分写错了。

[ Last edited by mrhjzhang on 2006-9-6 at 20:10 ]
11 发表于 2006-09-06 08:38 ·  中国 江苏 苏州 吴江区 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
感谢楼上几位热心的朋友,顺利解决。:P:P:lol::lol:

[ Last edited by mrhjzhang on 2006-9-6 at 20:11 ]
论坛跳转: