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>}] 選取在指定時間範圍內具有上次修改日期的檔案:
  • 選取上次修改日期晚或等於 () + 或早于或等於 () - 指定日期的檔案,其中 date 的格式為 MM/DD/YYYY。
  • 選取上次修改日期晚或等於 (的檔案, +) 目前日期加上指定的天數,或早于或等於 (, -) 目前日期減去指定的天數。
  • 有效 天數 的值包含範圍 0–32,768 中的任何數位。 如果未指定任何符號, + 預設會使用 。
/? 在 Cmd 視窗中顯示解說文字。

備註

  • 此命令 forfiles /S 類似于 dir /S

  • 您可以在 /C 命令列選項所指定的命令字串中使用下列變數:

    變數 描述
    @FILE 檔案名稱
    @FNAME 沒有副檔名的檔案名。
    @EXT 副檔名。
    @PATH 檔案的完整路徑。
    @RELPATH 檔案的相對路徑。
    @ISDIR 如果檔案類型是目錄,則評估為 TRUE。 否則,此變數會評估為 FALSE。
    @FSIZE 檔案大小,以位元組為單位。
    @FDATE 檔案上上次修改的日期戳記。
    @FTIME 上次修改過的檔案時間戳記。
  • forfiles命令可讓您在 上執行命令,或將引數傳遞至多個檔案。 例如,您可以在樹狀結構中具有副檔名.txt的所有檔案上執行 type 命令。 或者,您可以使用檔案名Myinput.txt作為第一個引數,在磁片磁碟機 C 上執行每個批次檔 (*.bat) 。

  • 此命令可以:

    • 使用 /d 參數,依絕對日期或相對日期選取檔案。

    • 使用 和 @FDATE 之類的 @FSIZE 變數來建置檔案的封存樹狀結構。

    • 使用 @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"