Windows 窗口批处理/DOS脚本以删除字符串中的重复字
有人能帮我删除Windows批处理/DOS脚本吗 如果字符串是- 测试1测试2测试1测试3测试2测试3 我需要一个脚本显示为Windows 窗口批处理/DOS脚本以删除字符串中的重复字,windows,batch-file,dos,Windows,Batch File,Dos,有人能帮我删除Windows批处理/DOS脚本吗 如果字符串是- 测试1测试2测试1测试3测试2测试3 我需要一个脚本显示为 test1 test2 test3同样,您可以手动执行:获取每个元素,检查它是否已经在输出中,如果没有,则追加它: @echo off setlocal enabledelayedexpansion set "string=test1 test2 test1 test3 test2 test3" set "newstring=" for %%i in (%string%)
test1 test2 test3同样,您可以手动执行:获取每个元素,检查它是否已经在输出中,如果没有,则追加它:
@echo off
setlocal enabledelayedexpansion
set "string=test1 test2 test1 test3 test2 test3"
set "newstring="
for %%i in (%string%) do (
echo !newstring!|findstr /i "\<%%i\>" >nul || set "newstring=!newstring! %%i"
)
echo %newstring:~1%
@echo关闭
延迟扩展
设置“string=test1 test2 test1 test3 test2 test3”
设置“新闻字符串=”
对于(%string%)中的%%i,请执行以下操作(
echo!newstring!| findstr/i“\”>num | | set“newstring=!newstring!%%i”
)
回显%newstring:~1%
(注意:如果需要区分大小写,请删除/i
)
编辑以处理完整的单词而不是(可能的)子字符串。有几种方法可以做到这一点;例如:
@echo off
setlocal EnableDelayedExpansion
set "in=test1 test2 tes test1 test3 test test2 test3"
rem 1- Insert the word if it is not in the output already
set "out= "
for %%a in (%in%) do (
if "!out: %%a =!" equ "!out!" set "out=!out!%%a "
)
echo "%out:~1,-1%"
rem 2- Remove each word from output, then insert it again
echo/
set "out= "
for %%a in (%in%) do (
set "out=!out: %%a = !"
set "out=!out!%%a "
)
echo "%out:~1,-1%"
你试了什么?请张贴你的例子嗯。。。您是否仍然使用80/90年代的
DOS
?您的意思是CMD
-命令提示符
?如果一个单词作为另一个单词的一部分包含,您的方法将失败;例如:set“string=test1 test2 tes test1 test3 test2 test3”
。Nortes
在输出中既不插入test
单词,我想通过使用findstr/i“\”
添加单词边界就可以很容易地修复。