标题:
[文本处理]
使用批处理或Powershell删除txt文件中的空格和空行和-号然后另存UTF8
[打印本页]
作者:
5i365
时间:
2022-1-11 13:44
标题:
使用批处理或Powershell删除txt文件中的空格和空行和-号然后另存UTF8
本帖最后由 5i365 于 2022-1-11 14:48 编辑
在百度和坛里搜索过一些相关的贴子, 但是都不彻底, 所以新开一贴, 求高手来个总结, 详细描述如下:
使用批处理或Powershell代码:
1.先读取批处理所在文件夹下所有的txt文件,
2.删除读取到的txt文件内容中的所有空格和空行和-号
空格可能的情况有:
在一行开头
在一行结尾
在一行之中
在一行之中的符号前
在一行之中的符号后
空行可能的情况有:
在一行中只有一个空格,在上一步中删除空格后就是空行
在文本最开头
在文本最开头N行空行
在文本最结尾
在文本最结尾N行空行
在文本内部连续两个空行或多个空行
-号可能的情况有:
在一行中只有一个-号,删除-号后就是空行
在文本最开头
在文本最结尾
在文本内部连续两个-号或多个-号
3.最后转为UTF8编码后另存替换原txt文件
遇到的问题:
1.txt文件的编码有可能是ANSI也有可能是UTF8
2.删除空行, 将 \n\r 替换为 空, 好像不能删除多行的空行
3.修改UTF8编码【可参考下面代码, 这个代码也有点小问题,另存后的文件格式是UTF8_BOM, 而需要的是UTF8不带BOM】:
for /f "delims=" %%i in ('dir /b *.txt') do if exist %%i powershell "(Get-Content -Path '%%~fi') | Out-File -Encoding UTF8 -FilePath '%%~fi'"
test.txt测试文件下载
https://wss1.cn/f/7c4aabuntt6
复制链接到浏览器打开
作者:
5i365
时间:
2022-1-11 15:35
用下面的方法删除空行, 最后一行仍会有空行, UTF8也带BOM
(gc "C:\Users\Administrator\Desktop\t.txt") | ? { $_.trim() -ne "" } | sc "C:\Users\Administrator\Desktop\t2.txt" -Encoding UTF8
作者:
5i365
时间:
2022-1-11 15:45
用下面的方法可以删除空格, 感觉应该稳
(gc "C:\Users\Administrator\Desktop\t.txt") -replace '\s{1,}', "" | sc "C:\Users\Administrator\Desktop\t2.txt" -Encoding UTF8
作者:
5i365
时间:
2022-1-11 15:49
用下面的方法可以删除-号, 感觉应该稳
(gc "C:\Users\Administrator\Desktop\t.txt") -replace '-', "" | sc "C:\Users\Administrator\Desktop\t2.txt" -Encoding UTF8
作者:
5i365
时间:
2022-1-11 16:06
又找到一个更简单的方法, 但是不稳,
(gc "C:\Users\Administrator\Desktop\t.txt").Trim(" -`n`r") | sc "C:\Users\Administrator\Desktop\t2.txt" -Encoding UTF8
作者:
5i365
时间:
2022-1-11 16:23
本帖最后由 5i365 于 2022-1-11 16:41 编辑
UTF8编码搞定了, 但是所有的行都并在一行了,却是乱码
$s = (gc "C:\Users\Administrator\Desktop\t.txt") -replace '\s{1,}', ""
[io.file]::WriteAllText("C:\Users\Administrator\Desktop\t2.txt", $s)
--------------------------------------------------------------------------------
用下面的办法不并在一起了,乱码问题没搞定
$f = [io.file]::ReadAllLines('C:\Users\Administrator\Desktop\t.txt')
$s = $f -replace '\s{1,}', ""
[io.file]::WriteAllLines("C:\Users\Administrator\Desktop\t2.txt", $s)
作者:
5i365
时间:
2022-1-11 16:31
本帖最后由 5i365 于 2022-1-11 16:34 编辑
每个分步功能, 在上面都有解决方法了, 就差整合了,
请求路过的高手, 把上面的代码整合一下, 实在搞不定了, 感谢
powershell 简单点的代码大致能看懂, 但是CMD的代码很多真是看不懂
欢迎光临 批处理之家 (http://bbs.bathome.net/)
Powered by Discuz! 7.2