中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-17 21:06
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用批处理将以下内容写入a.txt 查看 842 回复 13
楼 主 如何用批处理将以下内容写入a.txt 发表于 2008-02-06 01:21 ·  中国 吉林 吉林市 联通
中级用户
★★
积分 307
发帖 130
注册 2008-02-01 21:29
UID 109981
性别 男
状态 离线
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
2 发表于 2008-02-06 01:31 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
UID 42345
状态 离线
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
简单!简单!再简单!
3 发表于 2008-02-06 11:36 ·  中国 吉林 吉林市 联通
中级用户
★★
积分 307
发帖 130
注册 2008-02-01 21:29
UID 109981
性别 男
状态 离线
我的本意是问一问
每一行都用echo的形式怎么输出。这个more的用法我赚到了!!
4 发表于 2008-02-06 11:59 ·  中国 吉林 吉林市 联通
中级用户
★★
积分 307
发帖 130
注册 2008-02-01 21:29
UID 109981
性别 男
状态 离线
我这个批处理后面还有其他命令呢 ,用2楼的方法不是把批处理自身的命令也写进txt里面了?
5 发表于 2008-02-06 12:20 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
你改成+5看看效果
6 发表于 2008-02-06 15:19 ·  中国 吉林 吉林市 联通
中级用户
★★
积分 307
发帖 130
注册 2008-02-01 21:29
UID 109981
性别 男
状态 离线
+5的方法我试了,还是取到文件末尾啊
我不想取道文件末尾,只想截取一个批处理文件中间的几行,用这个命令还行吗
7 发表于 2008-02-06 15:39 ·  中国 吉林 吉林市 联通
中级用户
★★
积分 307
发帖 130
注册 2008-02-01 21:29
UID 109981
性别 男
状态 离线
用echo语句一行一行的写上述bat命令如何实现
8 发表于 2008-02-06 15:46 ·  中国 吉林 吉林市 联通
中级用户
★★
积分 307
发帖 130
注册 2008-02-01 21:29
UID 109981
性别 男
状态 离线
我如果写echo set num=0就会输入为空我要是写echo “set num=0”就会多出双引号
要把命令写进文本就那么难吗
9 发表于 2008-02-06 16:17 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
echo set num=0 >a.txt
10 在slore的提示下我终于搞定了 发表于 2008-02-06 16:38 ·  中国 吉林 吉林市 联通
中级用户
★★
积分 307
发帖 130
注册 2008-02-01 21:29
UID 109981
性别 男
状态 离线
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
11 发表于 2008-02-06 17:36 ·  中国 吉林 吉林市 联通
中级用户
★★
积分 307
发帖 130
注册 2008-02-01 21:29
UID 109981
性别 男
状态 离线
我总结的经验是><|&用^>^<^|^&来替换,%用%%来替换
12 发表于 2008-02-06 17:52 ·  中国 广东 揭阳 电信
新手上路
积分 4
发帖 2
注册 2007-03-10 11:51
UID 81313
性别 男
状态 离线
顶下人气
13 发表于 2008-02-08 17:10 ·  中国 安徽 淮北 联通
新手上路
积分 4
发帖 2
注册 2008-01-27 01:49
UID 109624
性别 男
状态 离线
学到了!
14 发现一个问题 发表于 2008-02-09 15:49 ·  中国 吉林 吉林市 联通
中级用户
★★
积分 307
发帖 130
注册 2008-02-01 21:29
UID 109981
性别 男
状态 离线
echo set num=0 >a.txt 执行的结果:set num=0的后面有一个空格这会影响数据的使用,解决办法:
(echo set num=0)>a.txt
论坛跳转: