中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: echo的一些奇怪问题 上一主题 | 下一主题
jialot
初级用户





积分 36
发帖 11
注册 2007-11-21
状态 离线
『楼 主』:  echo的一些奇怪问题

本人外行,高手莫笑
用ECHO做个文本,发现以下问题,请高手解释下:
>前面没空格,是不想输出到文本有空格
一:
@echo off
echo 第1行=1>1.txt
echo 第2行=2>>1.txt
echo 第3行=3>>1.txt
echo 第4行=4>>1.txt
echo 第5行=5>>1.txt
echo 第6行=6>>1.txt
echo 第7行=7>>1.txt
echo 第8行=8>>1.txt
echo 第9行=9>>1.txt
echo 第10行=10>>1.txt
echo 第11行 1>>1.txt
echo 第12行 2>>1.txt
echo 第13行 3>>1.txt
echo 第14行 4>>1.txt
echo 第15行 5>>1.txt
echo 第16行 6>>1.txt
echo 第17行 7>>1.txt
echo 第18行 8>>1.txt
echo 第19行 9>>1.txt
echo 第20行 10>>1.txt
echo 第21行=11>>1.txt
echo 第22行 12>>1.txt
echo 第23行=1 >>1.txt
echo 第24行=2 >>1.txt
echo 第25行 1 >>1.txt
echo 第26行 2 >>1.txt
exit

输出的1.txt如下:
第1行=
第10行=10
第11行
第20行 10
第21行=11
第22行 12
第23行=1
第24行=2
第25行 1
第26行 2

问题:
1.第1行“第1行=1”输出成“第1行=”(1没了)
2.第11行的“第11行 1”变成“第11行 ”(空格在,1没了)
3.第2-9行及12-19行消失了
4.当数字为2位数字或>前带空格,则一切正常

但是如果在每个>前加个符号,比如“晕”,再把晕字替换掉,又一些正常
echo 第1行=1晕>1.txt
echo 第2行=2晕>>1.txt
echo 第3行=3晕>>1.txt
echo 第4行=4晕>>1.txt
echo 第5行=5晕>>1.txt
echo 第6行=6晕>>1.txt
echo 第7行=7晕>>1.txt
echo 第8行=8晕>>1.txt
echo 第9行=9晕>>1.txt
echo 第10行=10晕>>1.txt
echo 第11行 1晕>>1.txt
echo 第12行 2晕>>1.txt
echo 第13行 3晕>>1.txt
echo 第14行 4晕>>1.txt
echo 第15行 5晕>>1.txt
echo 第16行 6晕>>1.txt
echo 第17行 7晕>>1.txt
echo 第18行 8晕>>1.txt
echo 第19行 9晕>>1.txt
echo 第20行 10晕>>1.txt
echo 第21行=11晕>>1.txt
echo 第22行 12晕>>1.txt
echo 第23行=1晕>>1.txt
echo 第24行=2晕>>1.txt
echo 第25行 1晕>>1.txt
echo 第26行 2晕>>1.txt
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (1.txt) do (
    set var=%%i
    set "var=!var:晕=!"
    echo !var!>>2.txt
)
del 1.txt
ren 2.txt 1.txt

[ Last edited by jialot on 2007-12-30 at 11:09 PM ]

2007-12-30 23:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 2 楼』:  

通常>前面的字符是0、1、2的话都要加转定义符^
@echo off
echo 第1行=^1>1.txt
echo 第2行=^2>>1.txt
echo 第10行=1^0>>1.txt
或者用这个代码
@echo off
>1.txt echo 第1行=1
>>1.txt echo 第2行=2
>>1.txt echo 第3行=3
>>1.txt echo 第4行=4
>>1.txt echo 第5行=5
>>1.txt echo 第6行=6
>>1.txt echo 第7行=7
>>1.txt echo 第8行=8
>>1.txt echo 第9行=9
>>1.txt echo 第10行=10
>>1.txt echo 第11行 1
>>1.txt echo 第12行 2
>>1.txt echo 第13行 3
>>1.txt echo 第14行 4
>>1.txt echo 第15行 5
>>1.txt echo 第16行 6
>>1.txt echo 第17行 7
>>1.txt echo 第18行 8
>>1.txt echo 第19行 9
>>1.txt echo 第20行 10
>>1.txt echo 第21行=11
>>1.txt echo 第22行 12
>>1.txt echo 第23行=1
>>1.txt echo 第24行=2
>>1.txt echo 第25行 1
>>1.txt echo 第26行 2
exit




第一高手    第二高手

2007-12-30 23:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 3 楼』:  

试试这样:
>1.txt echo 第1行=1
>>1.txt echo 第2行=2
>>1.txt echo 第3行=3
..................



简单!简单!再简单!
2007-12-30 23:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jialot
初级用户





积分 36
发帖 11
注册 2007-11-21
状态 离线
『第 4 楼』:  

谢谢各位,上述方法可行
但我还是不明白
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (1.txt) do (
    set var=%%i
    set "var=!var:晕=!"
    echo !var!>>2.txt
)
del 1.txt
ren 2.txt 1.txt
这段里面也有echo !var!>>2.txt,为何又可以正常输出呢?

2007-12-30 23:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 5 楼』:  


setlocal enabledelayedexpansion
echo 0>2.txt

setlocal enabledelayedexpansion
echo !0>2.txt
echo !>>2.txt

setlocal enabledelayedexpansion
echo !0>2.txt
endlocal
echo !>>2.txt




第一高手    第二高手

2007-12-30 23:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cndos
新手上路





积分 2
发帖 1
注册 2005-11-2
状态 离线
『第 6 楼』:  

说穿了不过是重定向的通道而已
在重定向符号前面加数字0~9
代表重定向不同的通道
0是标准输入
1是标准输出
2是标准错误
3~9则是未定义的通道

2007-12-30 23:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lovealei
新手上路





积分 8
发帖 3
注册 2005-7-15
状态 离线
『第 7 楼』:  

先谢谢大家了,我虽然还不明白,但总算有点思路了

下面这段代码是朋友给我的

cd ghost
if exist WATTCP.CFG del WATTCP.CFG >nul


md ip

SET ip=1

if exist ip\1.ip SET ip=2
...more...

if exist ip\253.ip SET ip=254

if "%ip%" == "1" echo. >ip\1.ip

echo IP=192.168.2.%ip%> Wattcp.cfg


if "%ip%" == "2" ren ip\1.ip 2.ip

...more...

if %ip% == 254 ren ip\253.ip 254.ip


REM echo IP=192.168.2.%1> Wattcp.cfg

echo NETMASK=255.255.255.0>> Wattcp.cfg
echo GATEWAY=192.168.2.251>> Wattcp.cfg

大家帮忙看看,我去试试!

2008-1-8 01:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: