中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-07 23:30
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何去除文本中所有空格和空行(已解) 查看 1,484 回复 6
楼 主 如何去除文本中所有空格和空行(已解) 发表于 2008-03-31 23:32 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
===============================================
提示:********解决方案见三楼********
有a.txt,内容如下:
  a d b d e jf ;k  jdpopfd fkdlk ;            


fksffjkla jsklfjkla j ksaljfkl jklsaj    
 
ff f fff  ffff ff ffff  fff cccc cccccc ccc ccccccc

  ddddd dq dqd fdkfjdk fjdskljg k;         

======= ^^^^^****&&&&&&& ~!@#$%^&*(()  : =   







gjfdgkjk 'g          

要通过批处理生成b.txt,内容如下:
adbdejf;kjdpopfdfkdlk;            
fksffjklajsklfjklajksaljfkljklsaj    
fffffffffffffffffffcccccccccccccccccccc
ddddddqdqdfdkfjdkfjdskljgk;         
======= ^^^^^****&&&&&&&~!@#$%^&*(():=   
gjfdgkjk 'g

我写了段代码,仅能处理到如下程度,望高人支招啊。
@echo off
if exist b.txt del b.txt
for /f "delims=" %%i in ('findstr .* a.txt') do (
set var=%%i
  setlocal enabledelayedexpansion
if not "!var!"=="!var: =!" echo !var: =! >>b.txt
endlocal
)
start b.txt

  adbdejf;kjdpopfdfkdlk;              
fksffjklajsklfjklajksaljfkljklsaj    
ff f fff  ffff ff ffff  fffcccc cccccc ccc ccccccc
  ddddddqdqdfdkfjdkfjdskljgk;         
=======^^^^^****&&&&&&&~!@#$%^&*(()  :=   
gjfdgkjk'g          


[ Last edited by zw19750516 on 2008-4-1 at 12:20 AM ]
批处理之家新域名:www.bathome.net
2 发表于 2008-03-31 23:48 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
======= ^^^^^****&&&&&&&~!@#$%^&*(():=   
gjfdgkjk 'g

不需要去掉吗?
3 发表于 2008-03-31 23:53 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
:

@echo off
for /f "delims=" %%a in (a.txt) do (
set var=%%a
setlocal enabledelayedexpansion
set var=!var: =!
if not "!var!"=="" set var=!var: =!
if not "!var!"=="" echo !var!
endlocal
)
pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
bat-zw +4 2008-04-01 00:20
致精致简!
4 看来都是汉字输入法的错!!! 发表于 2008-03-31 23:55 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
如果是纯英名下生成的a.txt,我的代码应该是没问题的(测试了)。
但如果空格是汉字输入状态下生成的就挂了,是不是处理不了啊。
批处理之家新域名:www.bathome.net
5 发表于 2008-04-01 00:03 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by 26933062 at 2008-3-31 23:53:
@echo off
for /f "delims=" %%a in (a.txt) do (
set var=%%a
setlocal enabledelayedexpansion
set var=!var: =!
if not "!var!"=="" set var=!var:  ...

是不是应该改为
@echo off
for /f "delims=" %%a in (a.txt) do (
set var=%%a
setlocal enabledelayedexpansion
set var=!var: =!
if not "!var!"=="" set var=!var: =!
echo.!var! >>b.txt
endlocal
)

但即使这样处理的结果仍有个空行在如下:
adbdejf;kjdpopfdfkdlk; 
fksffjklajsklfjklajksaljfkljklsaj

fffffffffffffffffffcccccccccccccccccccc
ddddddqdqdfdkfjdkfjdskljgk;
=======^^^^^****&&&&&&&~!@#$%^&*(():=
gjfdgkjk'g
批处理之家新域名:www.bathome.net
6 发表于 2008-04-01 00:04 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
3楼代码可以处理全角空格啊!
致精致简!
7 发表于 2008-04-01 00:18 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by 26933062 at 2008-4-1 00:04:
3楼代码可以处理全角空格啊!

测试成功,高人,自愧弗如啊!
批处理之家新域名:www.bathome.net
论坛跳转: