2013-01-05 36 views
3

我打電話給我要搜索的文件input.txt和字符串我想查找mystring。 input.txt中(real input.txt)僅使用Windows批處理在文件中查找和複製字符串

randomstring1<>"\/=: 
randomstring2<ORIGINAL>mystring</ORIGINAL>randomstring3 
  • 的myString

    實施例的內容是由必須被搜索

  • 兩者ORIGINAL標籤都有效之間的字符串應該被複制到字符串<ORIGINAL></ORIGINAL>包圍剪貼板(使用|剪輯)
  • mystring and th電子標籤只出現一次。但是,他們沒有固定的位置
  • 所有字符串可以包含特殊字符(<,>,」,\,/,=,:)

我讀的other SO questions了很多,但說實話:FOR-的環和SET命令的語法是太尷尬了我,我想我最好的拍攝將是FINDSTR命令。但是,也許還可以用正則表達式表達的一些幫助。

要使用VBScript, Powershell,SED,FART,AWK,grep或任何其他附加工具。

如果您發佈解決方案,請親切一些並解釋困難的部分。
我想了解它,也許對其他人也有幫助。我已經放棄了之前

我最後的嘗試是這個TEST.CMD

@echo off 
set "x=randomstring1<>"\/=:randomstring2<ORIGINAL>mystring</ORIGINAL>randomstring3" 
set "x=%x:*<ORIGINAL>=%" 
set "x=%x:</ORIGINAL>*=%" 
set x=%x:~2% 
echo %x% 
pause 
+0

*「for循環和SET命令語法太尷尬,我」 * - 可悲的是,許多Windows批處理腳本的功能可能會顯得很尷尬。即使習慣了它們,它們中的一些仍然看起來很尷尬,特別是如果你知道其他腳本工具或語言中更容易/更清晰的解決方案。但是,對於您來說,FOR/F循環和SET/P賦值可能是在Windows批處理腳本中逐行處理文本文件的兩個最基本的本機設備。意思是你最好習慣他們。 :)而且,誰知道,他們最終可能會在你身上成長。 :) –

回答

2
@echo off 
rem Let findstr to find the LINE you want (only once): 
for /F "delims=" %%a in ('findstr "<ORIGINAL>" input.txt') do set "line=%%a" 
ECHO LINE: "%line%" 
rem Change left delimiter by { 
set "line=%line:<ORIGINAL>={%" 
rem Change right delimiter by } 
set "line=%line:</ORIGINAL>=}%" 
ECHO STRING DELIMITED: "%LINE%" 
rem Get second token delimited by { and } 
for /F "tokens=2 delims={}" %%a in ("%line%") do set string=%%a 
ECHO STRING: "%STRING%" 
rem Copy string to clipboard 
REM echo %string%| clip 

輸出:

LINE: "randomstring2<ORIGINAL>mystring</ORIGINAL>randomstring3" 
STRING DELIMITED: "randomstring2{mystring}randomstring3" 
STRING: "mystring" 

作爲一個選項,可以從行首刪除直到左分界符:

set "line=%line:*<ORIGINAL>=%" 

...並獲得第一個令牌通過任何你希望的分隔符分隔(即:}):

for /F "delims=}" %%a in ("%line%") do set string=%%a 
+0

'for/F「delims =」%% a in('findstr「mystring」input.txt')'。這搜索「mystring」,對吧?但「mystring」未知,無法搜索。它被包圍。也許我的描述是誤導? – nixda

+0

Ops!我的錯誤,我有點心不在焉......只需在findstr命令中將「mystring」改爲「」;我已經在上面的程序中進行了測試:輸出結果是一樣的;-) – Aacini

+0

**它的大小寫敏感** = D非常感謝(原創)原創) – nixda

相關問題