2013-10-24 169 views
0

我有一個字符串像'ntuser.dat ntuser.dat.log ntuser.ini test.bat test1.bat advice.20131024.98767 textdoc.txt'
我想刪除所有字符指定的字符串,直到'advice.20131024'
我怎樣才能做到這一點使用Windows批處理命令?
我還需要保存結果串中的可變
由於事先刪除字符,直到一個特定的子字符串

+1

您是否想要在'advice.20131024'之後刪除位? – foxidrive

+0

是的,建議前的所有人物.20131024。 advice.20131024可以位於給定字符串中的任意位置。 – user2907999

+0

但你想保持正確的東西? – Monacraft

回答

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)與用於循環

@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% 

(三)看到foxidrive答案(我總是忘記)

+0

「建議」後的'.20131024'部分也可以保存在支票中嗎?因爲給定字符串中可能有多個以'advice'開頭的子字符串 – user2907999

+0

如果知道該值,請調整比較字符串和子字符串的長度。在這兩個示例中,您都需要將':〜0,6%'改爲':〜0,15%' –

+0

'advice'後面的部分。實際上是當前日期。所以我得到它並將它存儲在另一個變量中。如何將該變量添加到比較中? – user2907999

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%" 
相關問題