Text 批处理脚本-删除文件中的重复标记

Text 批处理脚本-删除文件中的重复标记,text,batch-file,Text,Batch File,我在文本文件中有重复的标记我想创建没有重复标记的新文本文件(保留分隔符) 分隔符是:~@^*^@~ 示例文件: aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~xxx~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~

我在文本文件中有重复的标记我想创建没有重复标记的新文本文件(保留分隔符)

分隔符是:~@^*^@~
示例文件:

aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~xxx~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb~@^*^@~aaa~@^*^@~bbb
结果应该是:

aaa~@^*^@~bbb~@^*^@~xxx
I删除重复行的步骤:

==================================
@echo off > outfile
if %1'==' echo which file? && goto :eof
if not exist %1 echo %1 not found && goto :eof

for /f "tokens=* delims= " %%a in (%1) do (
find "%%a" < outfile > nul
    if errorlevel 1 echo %%a >> outfile
)

但它不起作用,我做错了什么?其中一个分隔符字符是保留字吗?

谢谢您的建议。

for DELIMITERS选项将每个字符视为分隔符。您不能使用字符序列作为分隔符,因此它在您的情况下没有帮助

Windows批处理是用于简单任务的边缘文本处理器。Windows批处理文件的问题特别严重。这可能是可行的,但代码将是复杂和缓慢的最好

我强烈建议您使用其他更适合文本处理的工具。我相信以下任何一项都可以使用:

  • VBscript
  • JavaScript
  • 动力壳
  • 第三方工具,如perl。。。更多

Windows批处理可能是您可能做出的最糟糕的选择,尤其是针对您的问题。(这是来自一位非常喜欢使用批处理的人)

对于您给出的示例,您的预期输出是什么?结果应该是:aaa~@^*^^@~bbb~@^*^^^@~xxx您的分隔符是一个由多个字符组成的特定序列。值中是否也可以出现任何分隔符?例如,@是否会出现在不被视为分隔符一部分的值中?这是分隔符~@^*^@~因此这是一个有效序列:aaa~@^*^@~aa@aa~@^*^@~bbb如果删除分隔符,则为:aaaaa@aabbbThenks dbenham,VBS更容易我可以用2个带拆分或字符串和InStr函数的aray来实现,但由于客户端限制,需要将其作为批处理…您可以使用CSCRIPT从批处理运行VBS脚本。您的客户端是否禁用了该功能?@user648026-您的文件只有一行,对吗?文件的最大大小是多少?Batch根本无法处理长度大于8191字节的文本行。我不知道这个限制,我认为可以使用Power shell,它的语法与Batch相同吗?完全不同。同样,我不明白为什么不能通过CSCRIPT批处理命令简单地使用VBS。
 "tokens=* delims="
"tokens=* delims=~@^*^@~"