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

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

本帖最后由 smss 于 2019-6-28 10:13 编辑

判断1.txt文本中>后没有换行符则添加换行符 如果有换行符号则不添加
注意是怎样判断 不是怎样替换

  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

评分人数

TOP

本帖最后由 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"
复制代码
再次感谢你的帮助

TOP

回复 3# smss


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

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

评分人数

    • smss: 谢谢 又可以少写2行技术 + 1

TOP

返回列表