[英]How do I recursively list all files of type *.mp3 in a Windows .bat file?
[英]How to recursively list all files of desired file type in a specified directory?
我想在 Windows 中使用.bat
腳本列出所需目錄中的所有.java
文件。 當我運行這個:
set JMETALHOME=%cd%
dir %JMETALHOME%\jmetal\problems /S /B
它列出了problems
目錄中的所有文件。 但是當我只想將文件過濾到 java 文件時:
set JMETALHOME=%cd%
dir %JMETALHOME%\jmetal\problems /S /B *.java > sources.txt
它列出了%JMETALHOME%
文件夾中的所有.java
文件。
有兩種常用的方法可以通過完整路徑遞歸地獲取在目錄樹中找到的具有特定文件擴展名的所有文件的名稱。 一種常用方法是使用命令DIR ,另一種常用方法是使用命令FOR 。
演示 *.java 和 *.html 文件的兩種方法的示例代碼:
@echo off
set "JMETALHOME=%CD%"
dir "%JMETALHOME%\jmetal\problems\*.java" "%JMETALHOME%\jmetal\problems\*.html" /B /S >SourcesDir.txt
if exist SourcesFor1.txt del SourcesFor1.txt
for /R "%JMETALHOME%\jmetal\problems" %%I in (*.java *.html) do echo %%I>>SourcesFor1.txt
(for /R "%JMETALHOME%\jmetal\problems" %%I in (*.java *.html) do echo %%I)>SourcesFor2.txt
DIR需要指定 1 個或更多通配符模式以及路徑(絕對或相對)。
FOR提供了與通配符模式分開指定路徑的可能性。
FOR逐行輸出找到的文件名,這需要使用>>
重定向運算符並在運行FOR之前額外刪除可能已經存在的輸出文件,如上面使用SourcesFor1.txt
示例所示,或者將FOR本身嵌入到塊中並使用>
將塊輸出的所有內容重定向到一個文件中,覆蓋可能已經存在的文件,如SourcesFor2.txt
示例所示。
在第二個FOR示例中,請確保塊的echo %%I
和SourcesFor2.txt
括號)
之間沒有空格,否則該空格將附加在寫入輸出文件SourcesFor2.txt
每個文件名上。
要了解使用的命令及其工作原理,請打開命令提示符窗口,在那里執行以下命令,並仔細閱讀為每個命令顯示的所有幫助頁面。
del /?
dir /?
echo /?
for /?
if /?
set /?
另請閱讀有關使用命令重定向運算符的 Microsoft 文章。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.