标题: [文本处理] 【求助】批处理删除文本文件中空格和空行? [打印本页]
作者: mazt007 时间: 2009-3-25 15:01 标题: 【求助】批处理删除文本文件中空格和空行?
编一个 .bat 或 .vbs 文件,放入一个包含多个 .txt 文件的文件夹中, 拖拽多个文本文件到 .bat 或 .vbs 上释放, 即可将这些文本文件中的所有大、小空格,和所有空行自动删除。
(这两项工作分开编写也行)
我的邮箱:[email]mazt-007@163.com[/email]
在此小弟先谢谢了!!!!!!!!
作者: 随风 时间: 2009-3-25 16:02
只对批处理所在文件夹内文件有效
需创建临时文件 tem 运行前先确定当前文件夹内没有 tem 文件
文件名不能含有特殊符号。
删除文本中的空行及只有空格的空行、以及删除所有的空格(含全角空格)
拖放需处理的文件到此批处理上即可,支持同时拖放多个文件
测试时请先备份源文件。。。
:- @echo off
- if "%~1"=="" exit
- set "var=%*"
- set "var=%var:"=%"
- set "str=%var:~0,2%"
- call set var=%%var:%str%=" "%str%%%"
- set "var=%var:~1%"
- for %%i in (%var%) do (
- cd.>tem
- for /f "delims=" %%a in ('findstr /n .* %%i') do (
- set "num=%%a"
- setlocal enabledelayedexpansion
- set num=a!num:*:=!
- set num=!num: =!
- set num=!num: =!
- if not "!num!"=="a" >>tem echo.!num:~1!
- endlocal
- )
- move /y tem %%i
- )
- pause
复制代码
[ 本帖最后由 随风 于 2009-3-25 16:10 编辑 ]
作者: tireless 时间: 2009-3-25 16:41
- @echo off
- if "%~1"=="" exit
- for %%A in (%*) do (
- (
- for /f "eol= tokens=*" %%a in (%%~sA) do (
- if "%%a" neq "" (
- set str=%%a
- setlocal enabledelayedexpansion
- echo !str: =!
- endlocal
- )
- )
- ) > #tmp# && move #tmp# %%A
- )
复制代码
发现一个奇怪的现象,如果在 cmd 窗口中输入 test.bat 我是图片.png,会生成 #tmp#,而用拖拽的方式就不会产生 #tmp#。
[ 本帖最后由 tireless 于 2009-3-25 17:54 编辑 ]
作者: 随风 时间: 2009-3-25 17:16
tireless兄无法处理含空格的文件名吧,%%~sA 好像并不能解决这种情况。
作者: tireless 时间: 2009-3-25 17:21 标题: 回复 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
确实应该可以,参数会自动给带空格的文件名加上引号,我的代码画蛇添足了。。
作者: Batcher 时间: 2009-3-25 20:47
复制代码
第三方命令行工具sed.exe下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |