Forfiles 命令說明&用法示例
FORFILES
forfiles是一款windows平臺的軟體工具,其中選擇檔案並執行一個命令來操作檔案。檔案選擇標準包括名稱和上次修改日期。命令說明符支援一些特殊的語法選項。它可以直接在命令列中使用,也可以在批處理檔案或其他指令碼中使用。
該forfiles命令最初作為載入項提供在Windows NT 資源工具包中。它成為Windows Vista的標準實用程式,作為新管理功能的一部分。
用法
forfiles命令有幾個命令列選項。如果沒有給出選項或引數,它將輸出當前目錄中每個檔案的名稱。
開關 | 論據 | 含義 |
---|---|---|
/ P | 路徑 | 用於搜尋檔案的目錄(資料夾)。預設為當前目錄。 不接受UNC路徑(\\ machine \ share)。 |
/ M | 搜尋掩碼 | 一個glob模式(萬用字元搜尋)。僅選擇檔案名與模式匹配的檔案。副檔名包含在檔名中; 不是路徑(資料夾名稱)。模式必須與整個名稱匹配,或使用萬用字元。預設設定是匹配所有檔案。 此選項把glob模式 |
/ S | (沒有) | 選擇子目錄中的匹配檔案。預設情況下,僅搜尋單個指定目錄。 |
/C | 命令 | 為每個匹配的檔案執行給定的命令。命令字串通常需要用雙引號括起來。請參閱下面的命令字串中的語法。預設命令是CMD /C ECHO @FILE ,導致輸出(顯示)每個匹配檔案的名稱。 |
/ d | 日期 | 根據上次修改日期選擇檔案。請參閱下面的日期語法。預設情況下,無論日期如何,都會選擇檔案。 |
/? | (沒有) | 顯示幫助訊息(簡要使用說明)。禁止檔案搜尋/命令執行。不得與任何其他開關一起使用。 |
命令語法
除非如下所述,否則命令字串按給定的方式執行。
形式的序列0xFF,其中“0x”是文字,“FF”表示任何兩位十六進位制數,用相應的單位元組值替換。這可用於嵌入非列印ASCII字元或擴充套件ASCII字元。
提供了幾個變數,在命令中用作來自每個檔案的值的佔位符。從技術上講,變數不是必需的,但如果每個檔案的命令都不同,則必須使用變數。
變數 | 含義 |
---|---|
@file | 匹配項的名稱,雙引號。 |
@fname | 匹配項的基名(沒有副檔名),雙引號。 |
@ext | 副檔名,雙引號,沒有前導點。如果檔案有多個副檔名,則只返回最後一個。如果檔案沒有副檔名,則返回帶引號的空字串。 |
@path | 匹配項的完整路徑,雙引號,包括驅動器號和副檔名(如果有)。 |
@relpath | 匹配項的路徑,雙引號和相對於起始目錄(由/ P給出)。每個路徑以點和反斜槓(.\ )開頭。 |
@isdir | TRUE 如果匹配項是目錄,FALSE 則計算文字字串,否則。 |
@fsize | 匹配項的大小,以位元組為單位。目錄報告大小為零。 |
@fdate | 上次修改檔案的日期,採用當前使用者的本地化日期格式。 |
@ftime | 上次修改檔案的時間,採用當前使用者的本地化時間格式。 |
日期語法
在給定日期引數的情況下,日期開關(/ D)根據上次修改日期選擇檔案。
date引數可以作為文字日期給出,格式為MM / DD / YYYY(不接受其他日期格式)。可替代地,日期引數可以被給定為一個數字,在這種情況下,它被認為是指在日齡時(即,天日期當前日期的前幾天)。
如果date引數以減號( - )開頭,則僅選擇在給定日期或之前修改的檔案(較舊的檔案/先前修改過)。否則,僅選擇在給定日期或之後修改的檔案(較年輕的檔案/稍後修改)。可以給出顯式加號(+),但這是預設值。請注意,兩種模式都在給定日期選擇檔案。無法僅在給定日期選擇檔案(也不在之前或之後)。
示例
要列出驅動器 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"
要列出驅動器 C: 上存在時間多於 100 天的所有檔案,請鍵入:
forfiles /p "c:/" /s /m *.* /d t-100 /c "cmd /c echo @file :date >= 100 days"
要列出驅動器 C: 上 1993 年 1 月 1 日以前建立的所有檔案,而且對於日期早於 1993 年 1 月 1 日的檔案顯示“file is quite old!”,請鍵入:
forfiles /p "c:/" /s /m *.* /d t-01011993 /c "cmd /c echo @file is quite old!"
要按列格式列出驅動器 C: 上所有檔案的副檔名,請鍵入:
forfiles /p "c:/" /s /m *.* /c "cmd /c echo extension of @file is [email protected]" With:
要列出驅動器 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"
要列出驅動器 C: 上存在時間多於 100 天的所有檔案,請鍵入:
forfiles /p c:/ /s /m *.* /d t-100 /c "cmd /c echo @file :date >= 100 days"
要列出驅動器 C: 上 1993 年 1 月 1 日以前建立的所有檔案,而且對於日期早於 1993 年 1 月 1 日的檔案顯示“file is quite old!”,請鍵入:
forfiles /p c:/ /s /m *.* /d t-01011993 /c "cmd /c echo @file is quite old!"
要按列格式列出驅動器 C: 上所有檔案的副檔名,請鍵入:
forfiles /p c:/ /s /m*.* /c "cmd /c echo extension of @file is [email protected]"
刪除D:\db_bak目錄下20天之前的rar檔案,請鍵入:
forfiles /p "D:\ufbak\db_bak" /s /m *.rar /d -20 /c "cmd /c del @path"