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=~@^*^@~"