0

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

4

2 回答 2

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%"
于 2013-10-24T11:15:50.550 回答
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) 使用 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 的答案(我总是忘记这一点)

于 2013-10-24T11:14:59.683 回答