在批处理中replace符号或换行符

我发现一个批处理脚本,将string更改为另一个string。

下面的批处理脚本将test.txt中的每个“洗澡”更改为“hello”

@echo off setlocal enabledelayedexpansion set INTEXTFILE=test.txt set OUTTEXTFILE=test_out.txt set SEARCHTEXT=bath set REPLACETEXT=hello set OUTPUTLINE= for /f "tokens=1,* delims=¶" %%A in ( '"type %INTEXTFILE%"') do ( SET string=%%A SET modified=!string:%SEARCHTEXT%=%REPLACETEXT%! echo !modified! >> %OUTTEXTFILE% ) del %INTEXTFILE% rename %OUTTEXTFILE% %INTEXTFILE% 

(从如何replaceWindowsbatch file中的子string复制)

但是我想在test.txt中把每个'△▽'改成'newline and xy'。例如,如果test.txt是

 abc△▽def 

那么结果应该是

 abc xydef 

在攻击这个问题之前,我尝试了一个比较简单的问题:把每个'△▽'改为'xy'。 但是这个容易看起来的问题对我来说看起来很难。 我只是简单地把洗澡换成了△▽,并且在上面的脚本中向xy打招呼。 然后脚本不起作用。 我猜的原因是 – 因为△,▽是符号。

你能教我如何表示符号或换行符,在批处理脚本中选项卡?

白色UP-POINTS TRIANGLE以UTF-8编码,3个字节,十六进制码值E2 96 B3E2 96 B3 白色下降三角

如何使用Windows命令行环境查找和替换文件中的文本? 包含几个答案,其中包含有关如何使用控制台应用程序甚至Windows标准命令以批处理模式替换字符串的建议。

我写了我最喜欢的工具来替代,从Clay的实用程序为Win32 xchang32.exe 。

这个控制台应用程序按字节替换字节,因此可用于任何文件类型,二进制文件以及任何编码的文本文件。

具有以下参数的此工具可以根据需要进行替换。

 xchang32.exe Test.txt "^xE2^x96^xB3^xE2^x96^xBD" "^x0D^x0Axy" 

在文件Test.txt所有的△▽被一个回车符(0D)和一个换行符(0A)和字符xy替换。 在文件的情况下, Test.txt是只使用换行符作为行终止符的UNIX文件,从替换字符串中删除^x0D

当然,同样的替换也可以用UTF-8感知的文本编辑器来完成,比如UltraEdit,它甚至有一个替换文件命令能够替换文件夹或文件夹树的所有文件中的UTF-8编码字符串。