2014-02-24 110 views
0

我正在編寫一個批處理腳本,用於檢查目錄中是否存在文本文件。我使用下面的命令在批處理腳本中查找未知文本文件

if exist "test\dir\*.txt" 
(
    echo txt file exist 
) 

彷彿命令不會在搜索區分大小寫,所以我打算使用find命令,但我不能與*.txt使用它。

任何人都可以請指教我如何使用find命令來搜索未知的文本文件?

+0

你的代碼應該有'('在第一行末尾,空格後面。 – foxidrive

回答

0

dir/s將搜索給定目錄及其子目錄中的文件模式。執行後檢查ERRORLEVEL將允許知道文件是否被找到。

+0

抱歉,我無法理解你的描述,你可以舉一個例子 – user3327200

1

要測試文件的存在,你可以使用任何的下列

if exist "test\dir\*.txt" (
    echo File exists 
) else (
    echo File does not exist 
) 


if exist "test\dir\*.txt" echo File exists 


dir /a-d "test\dir\*.txt" > nul 2>nul 
if errorlevel 1 (
    echo File does not exist 
) else echo File exists 


dir /a-d "test\dir\*.txt" >nul 2>nul && echo File Exists || echo File does not exist 

只是列舉了習慣性的方式。

但是,正如你所說,所有這些構造不區分大寫或小寫。

find用於在文件中查找文本,而不是用於文件搜索。但是,如果搜索必須區分大小寫,則必須將以前樣本中文件存在的簡單檢查轉換爲文件的枚舉,然後在列表中搜索所需文件。

dir /a-d /b "test\dir\*.txt" 2>nul | find ".txt" > nul 
if errorlevel 1 (
    echo File does not exist 
) else echo File exists 

但是這會返回文件myfile.txt.exe。對於這樣的事情,findstr更靈活,允許指示在哪裏搜索字符串。在這種情況下,在該行的末尾

dir /a-d /b "test\dir\*.txt" 2>nul | findstr /l /e /c:".txt" > nul 
if errorlevel 1 (
    echo File does not exist 
) else echo File exists 

此列舉匹配*.txt的文件,過濾列表爲小寫那些用文字(在/l開關).txt(所述/c:參數)(默認值行爲),在行末(/e switch)