forfiles
選取檔案或檔案組並對其執行命令。 此命令最常用於批次檔中。
語法
forfiles [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] [{<date> | <days>}]]
參數
參數 | 描述 |
---|---|
/P <pathname> |
指定從中開始搜尋的路徑。 預設情況下,會從目前的工作目錄中開始搜尋。 |
/M <searchmask> |
根據指定的搜尋遮罩搜尋檔案。 預設搜尋遮罩為 * 。 |
/S | 指示 forfiles 命令以遞迴方式在子目錄中搜尋。 |
/C <command> |
在每個檔案上執行指定的命令。 命令字串應該以雙引號括住。 預設命令為 "cmd /c echo @file" 。 |
/D [{+\|-}][{<date> | <days>}] |
選擇最後修改日期在指定時間範圍內的檔案:
|
/? | 在 cmd 視窗中顯示說明文字。 |
備註
forfiles /S
命令類似於dir /S
。您可以在 /C 命令列選項所指定的命令字串中使用下列變數:
變數 描述 @FILE 檔案名稱 @FNAME 不含副檔名的檔案名稱。 @EXT 檔案副檔名。 @PATH 檔案的完整路徑。 @RELPATH 檔案的相對路徑。 @ISDIR 如果檔類型是目錄,則評估為 TRUE。 否則,此變數會評估為 FALSE。 @FSIZE 檔案大小 (以位元組為單位)。 @FDATE 檔案的最後修改日期戳記。 @FTIME 檔案的最後修改時間戳記。 forfiles 命令可讓您對多個檔案執行命令,或將引數傳遞給多個檔案。 例如,您可以對樹狀結構中檔案副檔名為 .txt 的所有檔案執行 type 命令。 或者,您可以執行磁碟機 C 上的每個批次檔 (*.bat),並將檔案名稱 Myinput.txt 做為第一個引數。
這個命令可以:
使用 /d 參數,依絕對日期或相對日期選取檔案。
使用 @FSIZE 和 @FDATE 等變數建置檔案的封存樹狀結構。
使用 @ISDIR 變數區分檔案與目錄。
使用 0xHH 格式的十六進位代碼在命令列中加入特殊字元 (例如:0x09 表示定位字元)。
此命令的工作原理是在設計為只處理單一檔案的工具上實作
recurse subdirectories
旗標。
範例
若要列出磁碟機 C 上的所有批次檔,請輸入:
forfiles /P c:\ /S /M *.bat /C "cmd /c echo @file is a batch file"
若要列出磁碟機 C 上的所有目錄,請輸入:
forfiles /P c:\ /S /M * /C "cmd /c if @isdir==TRUE echo @file is a directory"
若要列出目前目錄中至少存在一年的所有檔案,請輸入:
forfiles /S /M *.* /D -365 /C "cmd /c echo @file is at least one year old."
若要為目前目錄中早於 2007 年 1 月 1 日的每個檔案顯示文字檔已過期,請輸入:
forfiles /S /M *.* /D -01/01/2007 /C "cmd /c echo @file is outdated."
若要以資料行格式列出目前目錄中所有檔案的副檔名,並在副檔名之前新增定位字元,請輸入:
forfiles /S /M *.* /C "cmd /c echo The extension of @file is 0x09@ext"