用MATLAB批量文件重名

三種情況

1)如果文件與程序在同一路徑下,執行:!ren oldName.txt newName.txt
2)如果文件與程序在不同路徑下,需要指定路徑,執行:!ren C:\documents\oldName.txt newName.txt
3)特別的,如果路徑中包含有空格(space),一個比較笨的方法執行如下:
cd('C:\user documents\');
!ren oldName.txt newName.txt;

PS

!: 表示MATLAB調用DOS命令。另,網上有些大俠說空格只需要將路徑用雙引號括起來即可,但是我沒有試驗成功,這些失敗的經驗包括:
!ren ''C:\user documents\oldName.txt'' newName.txt;
!''ren C:\user documents\oldName.txt newName.txt'';
!ren C:\''user documents''\oldName.txt newName.txt;
!ren ''C:\user documents\oldName.txt newName.txt'';
!ren ''C:\user documents\'' oldName.txt newName.txt;

Further Stduy

  ren取自rename的前三個字母,name在英文中有“爲……取名”的意思,而re是前綴,有“重新做某事”的含義,結合起來,rename就是重命名的含義。
  ren 的用法很簡單,其使用格式爲:ren 舊文件 新文件名。例如,把test.txt改寫爲abc.txt,使用 ren test.txt abc.txt即可。
  需要注意的是,舊文件可以使用絕對路徑,也可以使用相對路徑,但是,新文件名不能使用任何路徑,只能是新的文件名,即使這個路徑就是當前目錄。例如:需要修改d:\test\abc.txt這個文件的名字爲xyz.txt的話,如果當前路徑位於d:\test,那麼,命令可以寫成:ren abc.txt xyz.txt、ren d:\test\abc.txt xyz.txt,但是,絕對不能寫成ren d:\test\abc.txt d:\test\abc.txt這樣的格式。之所以會有這個古怪的規定,可能是一旦把路徑寫成另外的目錄,ren就具備了“移動文件+重命名文件”的功能了,這和它的定位不相符。
  雖然ren的用法很簡單,但是,它的功能卻很強大,這主要得益於ren支持*和?這兩個通配符:*表示任意多個字符,?表示一個字符。例如,要把所有的以.txt作爲後綴名的文件改爲以.doc作爲後綴名,使用ren *.txt *.doc 即可,簡簡單單的一條語句,瞬間就改動了大量的文件,CMD命令簡潔而又不失強大的特點在這裏體現得淋漓盡致。又例如,要把以abc字符串打頭、並且只有5個字符的txt文件改名爲以xyz字符串打頭,那麼,可以這樣寫:ren abc??.txt xyz??.txt。
  需要引起高度重視的是,ren在使用通配符的時候,它的匹配規則十分奇特且過於複雜,不適合新手理解,在此不再展開做詳細的解釋。若想了解其中的詳情,請參考這篇帖子:這是不是ren的一個bug?http://www.cn-dos.net/forum/viewthread.php?tid=29538。若確實需要使用通配符,建議熟讀這篇帖子;若實在難以理解,則退而求其次,只用通配符做後綴名的修改工作,可以不用深究這些複雜的規則。
  ren還有一個十分奇特的屬性:當文件具備隱藏屬性或系統屬性的時候,ren將不起作用,需要把文件的隱藏或系統屬性去掉方可更名,對只讀屬性的文件,ren可順利更名。這在很多時候給我們製造了很多麻煩:當你不知道要即將更名的文件是否具備隱藏或系統屬性的時候,直接ren是很成問題的,;如果希望在重命名文件的時候,還必須保持原有的文件屬性,則更加讓人痛苦萬分。
  怎麼辦?
  如果不介意文件的屬性是否被改動,那麼,保險的做法是,用 attrib -s -h 命令先去掉文件可能存在的系統屬性或隱藏屬性,然後再ren之;如果還要求更名後的文件要保持原有的屬性的話,高效的做法是:先用for語句中的 %%~ai 擴展獲取原文件的屬性,經過處理之後保存到變量中去,然後用 attrib -s -h 去掉文件可能存在的系統屬性或隱藏屬性,ren之後,再讀取保留在變量中的屬性值,用 attrib 恢復原有的文件屬性。
  對於文件夾,ren同樣適用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章