2013-06-26 35 views
2

若跌破文本我的文件conatins一個特定的字符串:獨自找到使用Windows批處理腳本

sampleA1xxx sampleA2yyyy sampleA3zzzzz ... sampleA4hhhhh

我想找到sampleA4和使用Windows批處理腳本顯示sampleA4hhhh。

那是我的輸出應該是:sampleA4hhhhh

任何人都可以請幫助我。

+0

據我所知,除非有某種一致性,例如分隔所有樣品的普通字母(這包括一個空格),這是不可能的。注意,如果每個案例都是「A [編號]」,那麼它可能是可能的,但是如果沒有一致性,那麼它不是。 – Monacraft

+0

^^ sampleA1xxx ^^ sampleA2yyyy ^^ sampleA3zzzzz ^^ sampleA4hhhhh如果是這種情況,那麼有^^符號總是將每個實體分隔開來......現在有可能... – rvp

回答

0

OK,我有一個類似的案例嘗試這樣做我自己,它工作得很好:

for /f "tokens=4 delims=^^" %%a in (seperate.txt) do (echo %%a) 
pause 

注:這是專爲一個批處理文件,替換後4「令牌=」與任何一個分隔文本你想要停下來。

希望這會有幫助,

你的莫娜。

+0

它不適用於我。 :(...其實我需要找到一個關鍵字xxyyzzzz11.20.2並獲得版本11.20.2 .. – rvp

+0

你用你的文件名取代「seperate.txt」嗎? – Monacraft

+0

是的,我做了.. :) – rvp

2

採取分批或GNUWin sed看看:

 
>type file 
^^sampleA1xxx ^^sampleA2yyyy ^^sampleA3zzzzz ^^sampleA4hhhhh 

>sed -r "s/.*(\b\w+4\w+)/\1/" file 
sampleA4hhhhh 

2
@echo off 
setlocal EnableDelayedExpansion 
set target=sampleA4 
set len=8 
for /F "delims=" %%a in ('findstr "%target%" theFile.txt') do (
    for %%b in (%%a) do (
     set word=%%b 
     if "!word:~0,%len%!" equ "%target%" (
     echo !word:~%len%! 
    ) 
    ) 
) 
2
@ECHO OFF 
SETLOCAL 
FOR /f "delims=" %%i IN (q17316008.txt) DO SET line=%%i 
SET line=%line:^= % 
SET line=%line:*sampleA4=sampleA4% 
FOR %%i IN (%line:^^= %) DO SET line=%%i&GOTO :done 
:done 
ECHO %line% 

GOTO :EOF 

這應當做什麼,我收集是任務。它假設"samplea4"字符串存在於文件的單行中,不區分大小寫,並且該行不超過線路長度的〜8K限制。

只需用空格替換插入符號,將前導字符切換爲目標字符串的第一個匹配項,然後將該目標字符串作爲列表處理;第一個元素將是必需的字符串,因此在處理可用時停止處理。