中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用批处理将以下内容写入a.txt
作者:
标题: 如何用批处理将以下内容写入a.txt 上一主题 | 下一主题
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『楼 主』:  如何用批处理将以下内容写入a.txt

set num=0
setlocal enabledelayedexpansion
for /f "delims=" %%i in (input.txt) do call :intercept "%%i"
echo value=%str_%
pause
goto :eof

:intercept
set str=%1
set str=%str:~2,-2%
if not "%str%"=="" echo. "%str:~0,1%"|findstr "[0-9]">nul && (
    set num=1&set str_=!str_!%str:~0,1%&&call :intercept " !str:~1! ")||(
    if %num% equ 0 call :intercept " !str:~1! "
)
goto :eof

2008-2-6 01:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





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

more +1 %0>aaaa.txt &&exit
set num=0
setlocal enabledelayedexpansion
for /f "delims=" %%i in (input.txt) do call :intercept "%%i"
echo value=%str_%
pause
goto :eof

:intercept
set str=%1
set str=%str:~2,-2%
if not "%str%"=="" echo. "%str:~0,1%"|findstr "[0-9]">nul && (
    set num=1&set str_=!str_!%str:~0,1%&&call :intercept " !str:~1! ")||(
    if %num% equ 0 call :intercept " !str:~1! "
)
goto :eof



简单!简单!再简单!
2008-2-6 01:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 3 楼』:  

我的本意是问一问
每一行都用echo的形式怎么输出。这个more的用法我赚到了!!

2008-2-6 11:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 4 楼』:  

我这个批处理后面还有其他命令呢 ,用2楼的方法不是把批处理自身的命令也写进txt里面了?

2008-2-6 11:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 5 楼』:  

你改成+5看看效果

2008-2-6 12:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 6 楼』:  

+5的方法我试了,还是取到文件末尾啊
我不想取道文件末尾,只想截取一个批处理文件中间的几行,用这个命令还行吗

2008-2-6 15:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 7 楼』:  

用echo语句一行一行的写上述bat命令如何实现

2008-2-6 15:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 8 楼』:  

我如果写echo set num=0就会输入为空我要是写echo “set num=0”就会多出双引号
要把命令写进文本就那么难吗

2008-2-6 15:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 9 楼』:  

echo set num=0 >a.txt

2008-2-6 16:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 10 楼』:  在slore的提示下我终于搞定了

echo set num=0 > a.txt
echo setlocal enabledelayedexpansion >> a.txt
echo for /f "delims=" %%%%i in (input.txt) do call :intercept "%%%%i" >> a.txt
echo echo value=%%str_%% >> a.txt
echo pause >> a.txt
echo goto :eof >> a.txt
echo. >> a.txt
echo :intercept >> a.txt
echo set str=%%1 >> a.txt
echo set str=%%str:~2,-2%% >> a.txt
echo if not "%%str%%"=="" echo. "%%str:~0,1%%"^|findstr "[0-9]"^>nul ^&^& ( >>a.txt
echo     set num=1^&set str_=!str_!%%str:~0,1%%^&^&call :intercept " !str:~1! ")^|^|( >>a.txt
echo     if %%num%% equ 0 call :intercept " !str:~1! " >> a.txt
echo ) >> a.txt
echo goto :eof >> a.txt

2008-2-6 16:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 11 楼』:  

我总结的经验是><|&用^>^<^|^&来替换,%用%%来替换

2008-2-6 17:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
erick456
新手上路





积分 4
发帖 2
注册 2007-3-10
状态 离线
『第 12 楼』:  

顶下人气

2008-2-6 17:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zlp1982994
新手上路





积分 4
发帖 2
注册 2008-1-27
状态 离线
『第 13 楼』:  

学到了!

2008-2-8 17:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 14 楼』:  发现一个问题

echo set num=0 >a.txt 执行的结果:set num=0的后面有一个空格这会影响数据的使用,解决办法:
(echo set num=0)>a.txt

2008-2-9 15:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: