中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-02 19:16
48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 请教: 如何用批处理删除文本文件中以指定字符开始的行?
可打印版本  1,784 / 9
第1楼 lianjiang2004 发表于 2006-12-18 04:45
金牌会员 发帖 1,884 积分 3,946
请教: 如何用批处理删除文本文件中以指定字符开始的行?
请教: 如何用批处理删除文本文件中以指定字符开始的行?
比如想删除1.txt中以aaa空格“aaa ”为开始的行。谢谢?
第2楼 vkill 发表于 2006-12-18 05:11
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
copy 1.txt 2.txt
sed "/^aaa /d" 2.txt|more>1.txt
del 2.txt
第3楼 yardian 发表于 2006-12-18 05:15
中级用户 发帖 85 积分 305
第4楼 namejm 发表于 2006-12-18 05:26
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  若要考虑特殊字符,可以使用下面的演示代码(但是就无法避免在每行的首位都要加引号):

  若无须考虑连接符号,则可以使用如下演示代码:

  以上代码不直接用 delims=: 是为了防止行首的冒号被抛弃;用 findstr /n .* 的格式是为了不忽略以分号开头的行;给 %%i 加引号是为了对付空格,在 %%i 后加星号,是为了对付空行;第二段代码用 echo 后加了一个点号,也是为了对付空行。总之,用 for 语句处理文本要注意的事项比较多,可视具体文本增删语句的某些部分。
第5楼 lianjiang2004 发表于 2006-12-18 06:27
金牌会员 发帖 1,884 积分 3,946
这段时间在这里得到了各位的大力帮助,谢谢各位了。

这几种代码都试了,好像都不行。
我要把aaa 开头的行,整行删除掉。

[ Last edited by lianjiang2004 on 2006-12-18 at 07:06 AM ]
第6楼 ccwan 发表于 2006-12-18 21:01
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
这可奇了。我试过vkill和namejm兄的代码后没有问题啊。确如楼主要求,去掉了aaa开头的行。
不如楼主将你测试用的文本内容贴上来,大家一起看看。
第7楼 9527 发表于 2006-12-18 23:13
银牌会员 发帖 438 积分 1,185 来自 北京
试试下面一句是否管用???

findstr /b /v /c:"aaa " test.txt
第8楼 lianjiang2004 发表于 2006-12-19 00:57
金牌会员 发帖 1,884 积分 3,946
比如我想把下面文件中以rem 开头的行删除。
---------------
@Echo Off
Rem 第一次完成这段代码,不足和错误在所难免。
mode con: cols=76 lines=26
Set TT=WangZQ的 gghost 绿色备份恢复工具 卸载程序
COLOR 2F
TITLE %TT%

:uninstall0

echo.
echo 谢谢使用 gghost 绿色备份恢复工具 v2.0
echo =============================
echo.
echo 1. 卸载gghost后,自动恢复安装gghost到启动项
echo 所进行的文件修改,复原至原样。
echo.
Echo 2. 若设置了管理员密码,自动卸载需输入管理员密码。
echo.
pause

if %pwda%==0 goto uninstall

cls
Echo.
Echo.
Set /P unins_0=请先输入管理员密码:
If %unins_0%==%pwda% Goto uninstall
cls
Echo.
Echo Sorry! 管理员密码错误,不可自动卸载,按任意键结束 。。。
pause>nul
Goto Exit


:uninstall
cls
echo.
echo 正在卸载。。。
Rem 彻底清除本工具及自动生成的备用文件。
if exist c:\w_boot.ini goto sub_34a >nul


:sub_18d

[ Last edited by lianjiang2004 on 2006-12-19 at 07:21 AM ]
第9楼 namejm 发表于 2006-12-19 01:42
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  呵呵,还是 9527 兄的代码简洁,我绕了个大圈子了。

  借用 9527 兄的代码,可以写成这样:

  注意要加上参数 /i 来忽略大小写。

[ Last edited by namejm on 2006-12-18 at 12:46 PM ]
第10楼 lianjiang2004 发表于 2006-12-19 02:13
金牌会员 发帖 1,884 积分 3,946
可以了,谢谢各位。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023