2017-02-03 41 views
0

如果我不在srch字符串中的查詢之間使用空格,下面的批處理文件完美工作。一旦我添加一個空間,程序跳出並退出。Findstr不喜歡變量輸入中的空格。

@echo off 
mode con:cols=90 lines=40 
:top 
echo *******PHONE BOOK****** 
echo Press Q to quit 
echo. 
set /P srch=Enter Search query: 
IF /i %srch% EQU Q goto :end 
findstr /i %srch% %USERPROFILE%\documents\names.txt 
IF %ERRORLEVEL% EQU 1 goto :e1 
pause 
cls 
goto top 
pause 

:end 
set /p wate=Press any key to Quit 
exit 


:e1 
echo No match found edit names.txt in your documents folder. 
pause 
cls 
goto top 
exit 

另存爲PhoneQuery.bat

另存爲以下在文檔中的文件夾 「names.txt中」。

Name    Address   Local   Phone# 
Bob Billings  123 here ST  St Paul MI 800-555-5555 
Information  nil    any   411 
Fire Dept   Multi    Dubai   +1-992-611-1212 
+0

'FINDSTR /我 「%SRCH%」 %USERPROFILE %\ documents \ names.txt' – Squashman

+1

幫助文件顯示了一些很好的例子:**使用空格分隔多個搜索字符串,除非argume nt前綴爲/ C。例如,'FINDSTR'hello there「x.y」在文件x.y中搜索「hello」或「there」。 'FINDSTR/C:'hello there「x.y」在文件x.y中搜索「hello there」。** – Squashman

回答

1

您可以簡單地改變你的findstr一行改爲:

findstr/IC:"%srch%" "%USERPROFILE%\documents\names.txt" 

使用Find備選:

find /I "%srch%"<"%USERPROFILE%\documents\names.txt" 
+0

在開始的帖子中更新您的腳本,使用我的命令顯示它並再次解釋問題。正如你已經確定我的命令在控制檯中工作,顯然你的腳本有問題。 – Compo

+0

寫入的腳本在命令提示符下工作。但是,當放置在批處理文件中時,它會跳出命令行。你的方式回來了一個壞的開關「c:」 –

+0

刪除**'/ L' **,我已經在代碼中這樣做了,另外你有沒有想過放棄**'findstr' **,並簡單地使用* *'find/i「%srch%」** – Compo