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

[文本处理] 【已解决】怎样判断文本中指定字符后有没有换行符?

[复制链接]
发表于 2019-6-27 11:31:36 | 显示全部楼层 |阅读模式
本帖最后由 smss 于 2019-6-28 10:13 编辑

判断1.txt文本中>后没有换行符则添加换行符 如果有换行符号则不添加
注意是怎样判断 不是怎样替换
发表于 2019-6-28 09:26:22 | 显示全部楼层
  1. $str = [IO.File]::ReadAllText('1.txt', [Text.Encoding]::Default) -replace '>(?!\r\n)', ">`r`n";
  2. [IO.File]::WriteAllText('2.txt', $str, [Text.Encoding]::Default)
复制代码

评分

参与人数 1技术 +1 收起 理由
smss + 1

查看全部评分

 楼主| 发表于 2019-6-28 10:41:27 | 显示全部楼层
本帖最后由 smss 于 2019-6-28 12:56 编辑

回复 2# WHY
  1. cd /d "%~dp0"
  2. PowerShell "$s=[IO.File]::ReadAllText('1.txt', [Text.Encoding]::UTF8) -replace ''', '''' -replace '>(?!\r\n)', "">`r`n""";[IO.File]::WriteAllText('2.txt', $s, [Text.Encoding]::UTF8)"
复制代码
可是双引号转义需要这样 同上次说的有点不同
有没有比较全面的转义教学推荐呢 非常感谢!
直接运行一点事没有 但是加了延迟就不行了
  1. @echo off&SetLocal EnableDelayedExpansion
  2. ::此处有其它需要环境延迟的代码 需要再次关闭 真的坑 有木有 不知道大神都是怎样解决的
  3. setlocal disabledelayedexpansion
  4. PowerShell "$s=[IO.File]::ReadAllText('1.xml', [Text.Encoding]::UTF8) -replace ''', '''' -replace '>(?!\r\n)', "">`r`n""";sc 8.xml $s -Enc UTF8"
复制代码
再次感谢你的帮助
发表于 2019-6-28 16:14:16 | 显示全部楼层
回复 3# smss


    双引号就是这样转义的,有什么问题?
这样写的话,首先需要考虑 PowerShell 引号字符转义,还要考虑批处理特殊字符的转义。
字符的转义不可能一慨而论,需要具体问题具体分析。

开启变量延迟后,感叹号需要转义:
PowerShell "... -replace '>(?^!\r\n)', \"^>`r`n\"; sc 8.xml $s -Enc UTF8"

评分

参与人数 1技术 +1 收起 理由
smss + 1 谢谢 又可以少写2行

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 05:14 , Processed in 0.018234 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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