Windows批處理命令學習——將文件名自動更名為當前系統日期

——學習自《批處理命令在Windows操作中的典型應用》(張發凌編著)

若要將某個指定的文件名改為當前日期,而擴展名保留不變,可利用批處理程序巧妙地完成。

創建批處理文件renamefiletoday.bat,代碼如下:

  1. @echo off
  2. if not exist %1 ( echo 命令用法如下:
  3. echo %0 filename
  4. echo filename:表示需要修改的文件名。
  5. echo.
  6. echo.
  7. goto end
  8. )
  9. set extension = %~x1
  10. for /F "tokens = 1-3 delims=/-" %%A in (date/T) do set date=%%A%%B%%C
  11. ren %1 %date%%extension%
  12. echo.
  13. echo 文件%1已經成功更名為%date%%extension%
  14. set extension=
  15. set date=
  16. :end

代碼解析:

第2行:判斷是否合存在「%1」文件(%1為命令行傳給批處理要改名的文件),若文件不存在則執行if語句塊,if語句塊主要顯示了批處理的使用方法。

第3行:顯示批處理的使用方法,「%0」表示批處理名。

第4行;給用戶提示幫助信息,說明參數「filename」所表達的含意。

第7行:直接跳轉到「end」號處,結束批處理運行。

第8行:if語句塊的結束。

第9行:定義一個變數「extension」,其值為被修改文件的擴展名。「%1」表示被修改的文件名,「%~x1」表示「%1」文件的擴展名,「~x」組合表示取變數的擴展名。

第10行:for語句的「/f」參數表示使用文件解析過程處理命令輸出、字元串和文件內容,「tokens」用於定義「for」中的變數個數,「delims"用於定義字元串的分格符。

本行for語句在運行時,首先執行「in」後括弧中的「date/t」命令,返回當前日期字元串形如「2007-01-25 星期五」。for 語句根據"tokens=l-3 delims/-」 參數指示,將2007-01-25 星期五」字元串分隔為「2007」、「25」、「01」及「星期五」,並將前3個字元串依次賦給「%%A」、 「%%B」、「%%C」 3個for變數。變數的個數由「tokens」指定,而「delims」指定用於分隔字元串的分隔符。

當for語句執行完成後,date的值變成了「20070125」。需要注意的是,for中「delims"參數為」/」、」-」和空格。

第11行:利用「ren」命令將「%1」文件名更改為「%date%%extension%」。其中「%date%」 代表當前日期,「%extension%」代表擴展名。

第14行:清除批處理中使用的「extension」變數,以免影響系統或其他批處理程序使用。

第15行:清除批處理中使用的「date」變數,以免影響系統或其他批處理程序使用。

第16行:定義標號「end」,以便在未指定要修改的文件名情況下,直接退出批處理程序。

自己的實驗:

(1)只輸入renamefiletoday.bat,不輸入要更改的文件(批處理.jpg)時,出現提示信息,運行正確。刪除第5和第6行的代碼「echo.」時,對程序運行無影響,不知道這個「echo.」有什麼用?

(2)輸入renamefiletoday.bat及要更改的文件名時,出現錯誤提示「此時不應有 tokens = 1-3 delims=/-「 命令語法不正確」,但仍然提示了文件(批處理.jpg)已經成功更名,實際上並沒有。不知道是什麼地方出錯,怎麼修改?

如下圖:


推薦閱讀:
相關文章