找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22031|回复: 6

[文本处理] 【求助】批处理删除文本文件中空格和空行?

[复制链接]
发表于 2009-3-25 15:01:54 | 显示全部楼层 |阅读模式
编一个 .bat 或 .vbs 文件,放入一个包含多个 .txt 文件的文件夹中, 拖拽多个文本文件到 .bat 或 .vbs 上释放, 即可将这些文本文件中的所有大、小空格,和所有空行自动删除。

(这两项工作分开编写也行)

我的邮箱:mazt-007@163.com

在此小弟先谢谢了!!!!!!!!
发表于 2009-3-25 16:02:14 | 显示全部楼层
只对批处理所在文件夹内文件有效
需创建临时文件 tem 运行前先确定当前文件夹内没有 tem 文件
文件名不能含有特殊符号。
删除文本中的空行及只有空格的空行、以及删除所有的空格(含全角空格)
拖放需处理的文件到此批处理上即可,支持同时拖放多个文件
测试时请先备份源文件。。。
:
  1. @echo off
  2. if "%~1"=="" exit
  3. set "var=%*"
  4. set "var=%var:"=%"
  5. set "str=%var:~0,2%"
  6. call set var=%%var:%str%=" "%str%%%"
  7. set "var=%var:~1%"
  8. for %%i in (%var%) do (
  9.    cd.>tem
  10.    for /f "delims=" %%a in ('findstr /n .* %%i') do (
  11.       set "num=%%a"
  12.       setlocal enabledelayedexpansion
  13.    set num=a!num:*:=!
  14.    set num=!num: =!
  15.    set num=!num: =!
  16.    if not "!num!"=="a" >>tem echo.!num:~1!
  17.    endlocal
  18. )
  19. move /y tem %%i
  20. )
  21. pause
复制代码

[ 本帖最后由 随风 于 2009-3-25 16:10 编辑 ]
发表于 2009-3-25 16:41:27 | 显示全部楼层
  1. @echo off
  2. if "%~1"=="" exit
  3. for %%A in (%*) do (
  4.   (
  5.       for /f "eol= tokens=*" %%a in (%%~sA) do (
  6.              if "%%a" neq "" (
  7.                   set str=%%a
  8.                   setlocal enabledelayedexpansion
  9.                   echo !str: =!
  10.                   endlocal
  11.              )
  12.       )
  13.   ) > #tmp# && move #tmp# %%A
  14. )
复制代码
发现一个奇怪的现象,如果在 cmd 窗口中输入 test.bat 我是图片.png,会生成 #tmp#,而用拖拽的方式就不会产生 #tmp#

[ 本帖最后由 tireless 于 2009-3-25 17:54 编辑 ]
发表于 2009-3-25 17:16:40 | 显示全部楼层
tireless兄无法处理含空格的文件名吧,%%~sA 好像并不能解决这种情况。
发表于 2009-3-25 17:21:23 | 显示全部楼层

回复 4楼 的帖子

能处理吧。
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

g:\我的文档\桌面\新建文 件夹>for %a in ("g:\我的文档\桌面\新建文 件夹\复件 list2
.txt") do @echo %~sa
g:\我的文档\桌面\新建文~2\复件LI~1.TXT
发表于 2009-3-25 17:28:08 | 显示全部楼层
确实应该可以,参数会自动给带空格的文件名加上引号,我的代码画蛇添足了。。
发表于 2009-3-25 20:47:47 | 显示全部楼层
  1. sed "/^[ \t]*$/d" a.txt
复制代码
第三方命令行工具sed.exe下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:04 , Processed in 0.018117 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表