我正在編寫一個批處理腳本,用於檢查目錄中是否存在文本文件。我使用下面的命令在批處理腳本中查找未知文本文件
if exist "test\dir\*.txt"
(
echo txt file exist
)
彷彿命令不會在搜索區分大小寫,所以我打算使用find命令,但我不能與*.txt
使用它。
任何人都可以請指教我如何使用find命令來搜索未知的文本文件?
我正在編寫一個批處理腳本,用於檢查目錄中是否存在文本文件。我使用下面的命令在批處理腳本中查找未知文本文件
if exist "test\dir\*.txt"
(
echo txt file exist
)
彷彿命令不會在搜索區分大小寫,所以我打算使用find命令,但我不能與*.txt
使用它。
任何人都可以請指教我如何使用find命令來搜索未知的文本文件?
要測試文件的存在,你可以使用任何的下列
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)
你的代碼應該有'('在第一行末尾,空格後面。 – foxidrive