![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 08:47 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]如何删除文件中所有的行首/行尾空格和空行? |
| 可打印版本 1,515 / 12 |
| 第1楼 dejoy | 发表于 2009-02-08 02:38 |
| 初级用户 发帖 64 积分 76 | |
|
[已结]如何删除文件中所有的行首/行尾空格和空行? 结有a.txt,内容如下:
要通过批处理生成b.txt,内容如下: 删除行首/行尾空格其实就是类似很多开发语言中的Trim函数. 我搜索了论坛上的很多代码,但处理实现的程度有限,望高人支招。 已参考以下帖子,都未达: 处理一个文本文件:删除每行开头的和结尾的空格 http://www.cn-dos.net/forum/viewthread.php?tid=45557 如何删除带有空格的行,但不要删除空格 http://www.cn-dos.net/forum/viewthread.php?tid=39651 findstr /v /r /c:"^ *$" a.txt 不行,但(for /f "tokens=*" %i in ('more /s a.txt') do @echo %i) >b.txt貌似可以实现部分 新的删除空格问题?? http://www.cn-dos.net/forum/viewthread.php?tid=40858 如何去除文本中所有空格和空行(已解) http://www.cn-dos.net/forum/viewthread.php?tid=38943 [探讨][征集][去变量左右、首尾空格的方法] http://www.cn-dos.net/forum/viewthread.php?tid=25172 对变量有用,但对文本会无效,对类似"{ |<PRE>"等 如何删除TXT文件每行结尾的所有空格? http://www.cn-dos.net/forum/viewthread.php?tid=36722 批处理删掉记事本中的所有空格 http://www.cn-dos.net/forum/viewthread.php?tid=34632&fpage=1&highlight=%E7%A9%BA%E6%A0%BC### lxmxn 版主的方法连行中的空格也删除了. 如何清除文本里面开头的空格 http://www.cn-dos.net/forum/viewthread.php?tid=34631&fpage=1&highlight=%E7%A9%BA%E6%A0%BC### 如何删除批处理文件每行开头的所有空格? http://www.cn-dos.net/forum/viewthread.php?tid=34387&fpage=1&highlight=%E7%A9%BA%E6%A0%BC### JasonMing的方法可行,但会在末尾增加了些空行 查看了lxmxn有很多关于删除空格的回帖,行首的,行尾的,中间的,全部的,综合其它网友的回帖,但是有的要么是结果不正确,有的是无法处理某些字符行,要么是在处理变量时是正确的,但用来处理文本文件就可能是无法正确调用或结果不正确. 很多帖子的方法都是这行""导致错误:"命令语法不正确。"或者是直接被忽略 正确方法见7楼. [ Last edited by dejoy on 2009-2-8 at 21:18 ] |
|
| 第2楼 jmzhwf | 发表于 2009-02-08 11:50 |
| 新手上路 发帖 11 积分 16 | |
|
for /f "eol=; tokens=* delims= " %%a in (1.txt) do echo %%a>>2.txt
[ Last edited by jmzhwf on 2009-2-8 at 12:10 ] |
|
| 第3楼 netbenton | 发表于 2009-02-08 12:33 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
楼上的行首空格,空行都去掉了。
要去掉行尾的空格,应该把%%a 改为:%%~na for /f "tokens=*" %%a in (1.txt) do echo %%~na>>2.txt 这样连行首的也可以去掉,只是行尾的不行 [ Last edited by netbenton on 2009-2-8 at 12:38 ] |
|
| 第4楼 jmzhwf | 发表于 2009-02-08 13:21 |
| 新手上路 发帖 11 积分 16 | |
|
LS的方法我也考虑过~~但你看看2.txt的第六行就知道问题了
|
|
| 第5楼 tireless | 发表于 2009-02-08 13:40 |
| 银牌会员 发帖 1,122 积分 2,025 | |
| 第6楼 dejoy | 发表于 2009-02-08 13:55 |
| 初级用户 发帖 64 积分 76 | |
Originally posted by jmzhwf at 2009-2-8 11:50 AM: 结果同3楼说的一样,只去了行首空格,行尾的还在 Originally posted by netbenton at 2009-2-8 12:33 PM: 结果也不正确,结果如下: 第6行殘了,|</PRE>}变</PRE>}了 Originally posted by tireless at 2009-2-8 01:40 PM: 结果也不正确,如下,"{ |<PRE>"被挂了 [ Last edited by dejoy on 2009-2-8 at 14:04 ] |
|
| 第7楼 netbenton | 发表于 2009-02-08 14:19 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
只好用截字符串 去掉串首尾空格、[TAB],还有空行。
可处理所有文本特殊字符(二进制的是不可能的) 注意,第二个if 判断是的[tab],不是空格。还有%%a &call中间是有空格的。 @echo off cd.>a_out.txt for /f "tokens=*" %%a in (a.txt) do set a=%%a &call :sub start a_out.txt goto :eof :sub Setlocal EnableDelayedExpansion :lp set a=!a:~0,-1! set "b=!a:~-1! if "!b!"==" " goto :lp if "!b!"==" " goto :lp echo !a!>>a_out.txt endlocal&goto :eof |
|
| 第8楼 dejoy | 发表于 2009-02-08 14:23 |
| 初级用户 发帖 64 积分 76 | |
Originally posted by netbenton at 2009-2-8 02:19 PM: 结果看上去正确了,如下,谢 删除行首和行尾的空格问题解决了,还有删除空行的没 |
|
| 第9楼 netbenton | 发表于 2009-02-08 14:32 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
你测试的结果应该没有空行了吧
不信,你在原文件加几行空行试试。。。 |
|
| 第10楼 dejoy | 发表于 2009-02-08 14:38 |
| 初级用户 发帖 64 积分 76 | |
|
真的连空行也没了,谢谢
|
|
| 第11楼 jmzhwf | 发表于 2009-02-08 14:42 |
| 新手上路 发帖 11 积分 16 | |
|
在文件的后面加上几个TAB键试下
|
|
| 第12楼 dejoy | 发表于 2009-02-08 14:46 |
| 初级用户 发帖 64 积分 76 | |
|
jmzhwf兄,你的方法我试过了, 目的是要删除空格,从视觉上来说,space 及 tab都属空格,所以不分彼此,一视同仁
|
|
| 第13楼 yishanju | 发表于 2009-02-09 05:27 |
| 银牌会员 发帖 1,357 积分 1,488 | |
|
fr -ric:"^\s*|\s*\r\n$|^\r\n" /t a.txt
用FR试试;http://www.cn-dos.net/forum/attachment.php?aid=4562&checkid=9cba9&download=1 http://upload.cn-dos.net/img/1282.rar [ Last edited by yishanju on 2009-2-9 at 06:01 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |