![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 03:49 |
共 48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » echo的一些奇怪问题 |
| 可打印版本 1,408 / 6 |
| 第1楼 jialot | 发表于 2007-12-30 23:02 |
| 初级用户 发帖 11 积分 36 | |
|
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 ] |
|
| 第2楼 fastslz | 发表于 2007-12-30 23:14 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
通常>前面的字符是0、1、2的话都要加转定义符^
或者用这个代码 |
|
| 第3楼 terse | 发表于 2007-12-30 23:14 |
| 银牌会员 发帖 946 积分 2,404 | |
|
试试这样:
>1.txt echo 第1行=1 >>1.txt echo 第2行=2 >>1.txt echo 第3行=3 .................. |
|
| 第4楼 jialot | 发表于 2007-12-30 23:23 |
| 初级用户 发帖 11 积分 36 | |
|
谢谢各位,上述方法可行
但我还是不明白 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,为何又可以正常输出呢? |
|
| 第5楼 fastslz | 发表于 2007-12-30 23:40 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
|
|
| 第6楼 cndos | 发表于 2007-12-30 23:47 |
| 新手上路 发帖 1 积分 2 | |
|
说穿了不过是重定向的通道而已
在重定向符号前面加数字0~9 代表重定向不同的通道 0是标准输入 1是标准输出 2是标准错误 3~9则是未定义的通道 |
|
| 第7楼 lovealei | 发表于 2008-01-08 01:46 |
| 新手上路 发帖 3 积分 8 | |
|
先谢谢大家了,我虽然还不明白,但总算有点思路了
下面这段代码是朋友给我的 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 大家帮忙看看,我去试试! |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |