任何人都可以帮助我用窗口批处理/ DOS脚本删除一个字符串。窗口批处理/ DOS脚本删除字符串中的重复单词
如果字符串 -
test1的test2的test1的TEST3 TEST2 TEST3
我需要一个脚本来显示为
TEST1 TEST2 TEST3
任何人都可以帮助我用窗口批处理/ DOS脚本删除一个字符串。窗口批处理/ DOS脚本删除字符串中的重复单词
如果字符串 -
test1的test2的test1的TEST3 TEST2 TEST3
我需要一个脚本来显示为
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%
(注意:如果你想区分大小写,请删除/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%"
你试过了什么?请张贴你的例子 – Jeff
嗯...你还在使用80年代/ 90年代的DOS吗?你的意思是'CMD' - '命令提示符'? – SteveFest