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