我們在我們的應用程序(在Windows上運行)中收到了一個輸入文件列表。這些文件通過腳本自動從數據庫中提取。重命名包含'©'字符的文件
顯然,某些名稱包含特殊字符(如重音符號),並且這些字符在我們身邊呈現爲「©」。
如何以編程方式重命名這些文本文件(大約900'000)以擺脫此角色? 我們不能更改源文件,也不能重新提取文件。 問題是,由於這個角色,我們的系統涉及的另一個程序不接受這些文件。
我們在我們的應用程序(在Windows上運行)中收到了一個輸入文件列表。這些文件通過腳本自動從數據庫中提取。重命名包含'©'字符的文件
顯然,某些名稱包含特殊字符(如重音符號),並且這些字符在我們身邊呈現爲「©」。
如何以編程方式重命名這些文本文件(大約900'000)以擺脫此角色? 我們不能更改源文件,也不能重新提取文件。 問題是,由於這個角色,我們的系統涉及的另一個程序不接受這些文件。
我最終創建了一個新腳本來讀取輸入文件並在其標題中搜索特殊字符。
這是很容易的確:
string filename = filename.Replace("©", "e");
因爲「©」是文件名,腳本(在C#)能夠識別它,並相應地更換比賽。通過這種方式,我可以遍歷所有文件夾和子文件夾,只需讀取文件名並更改特殊字符即可。
謝謝大家的貢獻!
看看unix命令rename
。它允許您將perl正則表達式應用於一堆文件的名稱。在這種情況下,你可能想是這樣的:
$ rename 's/[^a-zA-Z0-9]//' *
在Debian rename
命令是perl
包的一部分。它也應該在CPAN上可用。
「在窗戶上運行」 –
愚蠢的我......那麼,重命名可能是一些Windows Perl分配的一部分:) – opqdonut
它是否必須編程?市場上有許多可批量重命名的工具:http://www.techsupportalert.com/Quick_Selection_Guide –
它也不能以編程方式,但我必須刪除特殊字符從一次所有的文件。大約有5個不同的文件夾。但是,如果該應用程序可以遞歸運行,那麼看起來非常有趣! – Francesco