解決方案
方法1 :使用File I /O Palette中的Move VI將文件從原本的路徑位置移動到另一個路徑位置。但是在Move VI的新路徑輸入端點中使用與舊文件相同的路徑但是不同的文件名。
- 在block diagram內點擊右鍵,然後選擇Programming»File I/O»Advanced File Function»Move。
- 將要被重新命名的文件及其路徑連接到Source Path Terminal上(例如Windows中的C:\ Folder1 \ Folder2 \ ... \ Filename.txt )。
- 使用File I / O Palette上的Strip Path和Build Path VI將舊文件的名稱替換為所需的新名稱。之後將新文件的完整路徑連接到Move VI的Target Path Terminal。請參考下圖程式碼。
方法2 :另一種方法是使用Copy VI來複製出舊文件的副本並改為新的名稱,然後使用Delete VI刪除舊文件。
注意 :如果不只重新命名且要移動文件位置,則連接到Target Path terminal的路徑可能會有所不同。
注意 :如果重新命名正在記憶體中執行的VI,則磁碟上的文件將被重新命名,但記憶體中的VI仍將具有舊名稱。關閉它時,系統將提示您使用舊名稱保存它。除非您將該名稱更改為新名稱,否則您將擁有兩個副本。
注意:如果您使用C:\作為文件路徑或目的路徑,則可能會出錯。發生此錯誤的原因是您沒有將文件複製到C槽或從C槽複製出文件的管理權限。請改用其他文件夾路徑。
方法3 :如果要重新命名非常大的文件或文件夾,建議使用第三種方法。上述的方法效率較低,需要很長時間才能完成。下圖VI使用Call Library Function Node來調用Windows API中的MoveFileA函式。
要使用此方法,請按照以下方式設置Call Library Function Node:
- 在Function tab上,將kernel32.dll指定為函式庫名稱(Library name)或路徑(path) 。
- 從Function name下拉選單中選擇MoveFileA。
- 檢查是否已選擇Run in UI thread and stdcall(WINAPI)。
- 在Parameters tab上,創建三個參數:
- Name: return type, Type: Numeric, Data Type: Signed 32-bit Integer
- Name: arg1, Type: String, Constant, String format: C String Pointer, Minimum size: <None>
- Name: arg2, Type: String, Constant, String format: C String Pointer, Minimum size: <None>
- 最終的Function Prototype將顯示為int32_t MoveFileA(const CStr arg1,const CStr arg2)。
方法4 :重新命名文件是一個可以在Command Line上調用的函式。以下圖示說明如何運行Command Line以更改文件名。
- 程式碼的第一部分是cmd / k cd <Containing Folder> 。這命令System Exec.vi導向至Containing Folder。 / k允許在同一個字串中輸入多個命令行。
- 第二個段是& rename <Old File Name> <New File Name> 。 &表示有第二個命令要執行。然後,rename 將<Old File Name>指定的文件夾更改為<New File Name>。
方法5 - 一次重命名文件夾中的所有文件 :可以使用上述任何方法重命名文件夾中的所有文件。下面的程式碼採用並擴展了方法1,以重新命名特定文件夾中的所有文件。
使用方法1,並配合Recursive File List.VI和Get File Extension.VI,重新命名了文件夾C:\ temp中的每個文件。