中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 重定向的没有得出想要的结果
作者:
标题: 重定向的没有得出想要的结果 上一主题 | 下一主题
740011611
初级用户





积分 96
发帖 83
注册 2009-6-4
来自 信阳
状态 离线
『楼 主』:  重定向的没有得出想要的结果

下面这段代码得不到想要的结果,但是把>>号前面加上一个空格就可以了,不知道为什么?
echo {>>test.txt
echo if ($2==2) $2=4 >>test.txt
echo else if ($2==1) $2=2 >>test.txt
echo else if ($2==3) $2=5>>test.txt
echo else if ($2==4) $2=3 >>test.txt
echo else $2=1>>test.txt
echo if ($13==1) $13=5>>test.txt
echo else if ($13==2) $13=4>>test.txt
echo else if ($13==3) $13=3>>test.txt
echo else if ($13==4) $13=2>>test.txt
echo else $13=1>>test.txt
echo if ($16==1) $16=5>>test.txt
echo else if ($16==2) $16=4>>test.txt
echo else if ($16==3) $16=3>>test.txt
echo else if ($16==4) $16=2>>test.txt
echo else $16=1>>test.txt
echo if ($19==1) $19=5>>test.txt
echo else if ($19==2) $19=4>>test.txt
echo else if ($19==3) $19=3>>test.txt
echo else if ($19==4) $19=2>>test.txt
echo else $19=1>>test.txt
echo if ($22==1) $22=5>>test.txt
echo else if ($22==2) $22=4>>test.txt
echo else if ($22==3) $22=3>>test.txt
echo else if ($22==4) $22=2>>test.txt
echo else $22=1>>test.txt
echo }>>test.txt


2010-12-24 00:15
查看资料  发送邮件  发短消息 网志  OICQ (740011611)  编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 2 楼』:  

方法1:
@echo off&setlocal ENABLEDELAYEDEXPANSION
(for /f "usebackq delims=" %%a in ("%~f0") do (
    set "a=%%a"
    if defined b echo %%a
    if "!a:~0,3!"==":标签" set b==
))>test.txt
exit
:标签
{
if ($2==2) $2=4
else if ($2==1) $2=2
else if ($2==3) $2=5
else if ($2==4) $2=3
else $2=1
if ($13==1) $13=5
else if ($13==2) $13=4
else if ($13==3) $13=3
else if ($13==4) $13=2
else $13=1
if ($16==1) $16=5
else if ($16==2) $16=4
else if ($16==3) $16=3
else if ($16==4) $16=2
else $16=1
if ($19==1) $19=5
else if ($19==2) $19=4
else if ($19==3) $19=3
else if ($19==4) $19=2
else $19=1
if ($22==1) $22=5
else if ($22==2) $22=4
else if ($22==3) $22=3
else if ($22==4) $22=2
else $22=1
}




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-24 01:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 3 楼』:  

方法2:
@echo off&setlocal ENABLEDELAYEDEXPANSION
(
echo {
echo if ($2==2) $2=4
echo else if ($2==1) $2=2
echo else if ($2==3) $2=5
echo else if ($2==4) $2=3
echo else $2=1
echo if ($13==1) $13=5
echo else if ($13==2) $13=4
echo else if ($13==3) $13=3
echo else if ($13==4) $13=2
echo else $13=1
echo if ($16==1) $16=5
echo else if ($16==2) $16=4
echo else if ($16==3) $16=3
echo else if ($16==4) $16=2
echo else $16=1
echo if ($19==1) $19=5
echo else if ($19==2) $19=4
echo else if ($19==3) $19=3
echo else if ($19==4) $19=2
echo else $19=1
echo if ($22==1) $22=5
echo else if ($22==2) $22=4
echo else if ($22==3) $22=3
echo else if ($22==4) $22=2
echo else $22=1
echo }
)>test.txt




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-24 01:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 4 楼』:  

方法3:
@echo off
(for /f "delims=" %%a in ('more +3^<"%~f0"') do echo %%a)>test.txt
exit
{
if ($2==2) $2=4
else if ($2==1) $2=2
else if ($2==3) $2=5
else if ($2==4) $2=3
else $2=1
if ($13==1) $13=5
else if ($13==2) $13=4
else if ($13==3) $13=3
else if ($13==4) $13=2
else $13=1
if ($16==1) $16=5
else if ($16==2) $16=4
else if ($16==3) $16=3
else if ($16==4) $16=2
else $16=1
if ($19==1) $19=5
else if ($19==2) $19=4
else if ($19==3) $19=3
else if ($19==4) $19=2
else $19=1
if ($22==1) $22=5
else if ($22==2) $22=4
else if ($22==3) $22=3
else if ($22==4) $22=2
else $22=1
}


   此帖被 +2 点积分    点击查看详情   
评分人:【 740011611 分数: +2  时间:2010-12-24 13:43




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-24 01:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: