|
|
发表于 2025-12-8 14:18:54
|
显示全部楼层
本帖最后由 aloha20200628 于 2025-12-8 14:38 编辑
用批处直接读写文本文件,读取会自动过滤空行,但用 echo 写出不会删除末尾换行符,且有每行字符量8KB的限制,还有行首字符过滤设置(默认是 ; 字符),以下一行流纯批取消了行首字符过滤设置...
- (for /f "delims="eol^= %%a in (1.txt) do echo,%%a)>2.txt
复制代码 在没有预装 powershell 的系统中,如果要删除全部空行包括末尾换行符,可用以下代码
- @echo off &setlocal &findstr "." 1.txt>#.$
- for /f %%n in ('find /c /v ""^<#.$') do set "n=%%n"
- (for /f "tokens=1* delims=:" %%a in ('findstr /n ".*" #.$') do if %%a neq %n% (echo,%%b) else set/p="%%b"<nul)>2.txt
- del /q #.$ &pause&exit/b
复制代码 但以上代码要求最后一行首字符不能是空格或跳格,否则会被扣除,以下 bat+jscript 脚本(存为 test.bat 运行)会弥补此缺憾,突破每行8KB字符量限制,而且能够兼容 ansi(即gb2312) 和 utf-8 编码文件,删除全部空行及其末尾换行符...
- 2>1/* ::
- @echo off &cscript /nologo /e:jscript "%~f0" 1.txt 2.txt &pause&exit/b */
- v=WSH.arguments, as=WSH.createobject('adodb.stream'), as.mode=3, as.type=2, as.charset='437', as.open, as.loadfromfile(v(0)), s=as.readtext(), as.close;
- s=s.replace(/[\r\n]+/g,'\r\n').replace(/\s*$/, '');
- as.open, as.writetext(s), as.savetofile(v(1),2), as.close, WSH.quit();
复制代码 |
|