2016-01-22 47 views
0

我想寫一個批處理文件(.bat)。使用批處理文件我想在文本文件中搜索唯一文本,並將包含文本的行作爲輸出打印到控制檯窗口中。搜索條件是用戶輸入。在文本文件中搜索文本並使用批處理文件在CMD提示符中打印

該任務需要哪個批次代碼?

例如下面是.txt文件的內容。

「命令提示符,也被稱爲CMD.EXE或CMD(其可執行文件名後),是在Windows NT,Windows CE的,OS/2和eComStation操作系統的命令行解釋器,它是DOS和Windows 9x系統(它也被稱爲「MS-DOS提示符」)中的COMMAND.COM的對應物,類似於類Unix系統上使用的Unix shell。最初版本的Windows NT命令提示符是[1]「

我想寫一個使用Windows標準命令的批處理腳本,其中用戶輸入搜索字符串,如Windows CE和th與此字符串整個行獲得輸出在命令提示符窗口中。

例如用戶輸入Windows CE輸出應該是:

is the command-line interpreter on Windows NT, Windows CE, OS/2 and eComStation 
+0

@Mofi:您的編輯已經改變問題的原來意義。在「改進的文本」格式中,很容易看到所需的輸出是.txt文件的第二行,但原始問題描述了完全不同的問題!我不知道OP使用什麼搜索條件從.txt文件中提取這樣的部分,所以我向用戶詢問了這一點,但IMO修改輸入數據的方式與匹配_you think_是搜索條件是不正確的方式來理解此問題... – Aacini

+0

@Mofi:請注意,Windows記事本沒有辦法顯示單行文件,因爲它出現在「改進的文本」修改中,但原始OP的格式是完全的在這個意義上正確。 – Aacini

+0

@ Zoso619什麼規則定義在一行中存儲在文本文件中的長段的哪一部分應當輸出到控制檯,以便在該段落中找到搜索字符串? – Mofi

回答

1

你並不需要創建此功能的批處理文件。它已存在於所有版本的Windows的find工具中,可以從任何cmd提示中調用該工具。下面是關於如何使用它的一些細節:How to Use Find from the command prompt

基於編輯點評:

find語法是非常簡單的。你似乎知道你要在搜索的文件,你知道如何提示用戶輸入的字符串:

set /P search_string= Enter the string you would like to search for: 
find "%search_string%" C:\ServiceLog%_store%.txt 
+0

感謝您的回覆。但它是我的計劃的一部分。我已經創建了批處理文件訪問受限路徑和照片某些日誌並在本地驅動器中創建記事本的代碼。通過相同的工具,我想寫一個代碼在用戶給出的輸入,它讀取放置在本地的記事本,並根據搜索條件獲取整個行,如果它匹配 – Zoso619

+0

然後只需從您的批處理文件中調用'find'參數。 –

+0

你能否分享上面我提到的例子的代碼?我對批量編程非常陌生。感謝你的幫助。 – Zoso619

1

下面的批處理文件中的行從輸入文件中的短語分開,其中短語是由逗號或點分隔的字符串。

@echo off 
setlocal EnableDelayedExpansion 

set /P "userString=Enter the search string: " 

rem Process all lines in file 
for /F "delims=" %%a in (input.txt) do (
    set "line=%%a" 

    rem Split all phrases in line 
    call :splitPhrases 

    rem Process each phrase 
    for /L %%i in (1,1,!numPhrases!) do (

     rem If the user string appears in this phrase 
     if "!phrase[%%i]:%userString%=!" neq "!phrase[%%i]!" (
     rem ... show it 
     echo !phrase[%%i]! 
    ) 

    ) 
) 
goto :EOF 


:splitPhrases 
set "numPhrases=0" 

:nextPhrase 
    for /F "tokens=1* delims=.," %%a in ("!line!") do (
     set /A numPhrases+=1 
     set "phrase[!numPhrases!]=%%a" 
     set "line=%%b" 
    ) 
if defined line goto nextPhrase 
exit /B 

輸出例如:

Enter the search string: Windows CE 
Windows CE 

如果你想更好的答案,請張貼更好的問題...

相關問題