删除字符直到特定子字符串

时间:2013-10-24 10:59:54

标签: batch-file

我有一个字符串,如'ntuser.dat ntuser.dat.log ntuser.ini test.bat test1.bat advice.20131024.98767 textdoc.txt'
我想删除指定字符串中的所有字符,直到'advice.20131024'为止 如何使用Windows批处理命令执行此操作? 我还需要将结果字符串保存在变量
中 提前谢谢

2 个答案:

答案 0 :(得分:4)

设置字符串,
更改它以删除所有内容,直到advice结束并将其替换为advice
然后回声其余的字符串。

set "string=ntuser.dat ntuser.dat.log ntuser.ini test.bat test1.bat advice.20131024.98767 textdoc.txt"
set "string=%string:*advice=advice%"
echo "%string%"

答案 1 :(得分:1)

(a)用字符串搜索

    set text=ntuser.dat ntuser.dat.log ntuser.ini test.bat test1.bat advice.20131024.98767 textdoc.txt

:loop
    if "%text:~0,6%"=="advice" goto exitLoop
    set text=%text:~1%
    goto loop

:exitLoop
    echo %text%

(b)with for循环

@echo off
    setlocal enableextensions enabledelayedexpansion

    set text=ntuser.dat ntuser.dat.log ntuser.ini test.bat test1.bat advice.20131024.98767 textdoc.txt
    set result=

    for %%f in (%text%) do (
        set x=%%f
        if "!x:~0,6!"=="advice" (
            set result=%%f
        ) else (
            if not "!result!"=="" set result=!result! %%f
        )
    )

    echo %result%

(c)见foxidrive答案(我总是忘记)