[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

编一个 .bat 或 .vbs 文件,放入一个包含多个 .txt 文件的文件夹中, 拖拽多个文本文件到 .bat 或 .vbs 上释放, 即可将这些文本文件中的所有大、小空格,和所有空行自动删除。

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

我的邮箱:[email]mazt-007@163.com[/email]

在此小弟先谢谢了!!!!!!!!

  1. sed "/^[ \t]*$/d" a.txt
复制代码
第三方命令行工具sed.exe下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

确实应该可以,参数会自动给带空格的文件名加上引号,我的代码画蛇添足了。。
技术问题请到论坛发帖求助!

TOP

回复 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

TOP

tireless兄无法处理含空格的文件名吧,%%~sA 好像并不能解决这种情况。
技术问题请到论坛发帖求助!

TOP

  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 编辑 ]

TOP

只对批处理所在文件夹内文件有效
需创建临时文件 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 编辑 ]
技术问题请到论坛发帖求助!

TOP

返回列表