久しぶりにC#を書いた(ファイル名の置換)
「IMG_%d%d%d%d.JPG」という複数のファイルを、「img_%d%d%d%d.JPG」に置き換えたかった。正規表現のところでつまずいた。
こういうのはRubyとかでささーっとかけるようになりたいものです*1。あとはLINQでがんばれば1行でできるかな。難しいかな。
using System; using System.Text; using System.IO; using System.Text.RegularExpressions; namespace webalbum_scripts { class Program { static void Main( string[] args ) { string PATH = @"C:\Documents and Settings\Administrator\デスクトップ\photos\"; string[] list = Directory.GetFiles( PATH, "*.JPG", SearchOption.TopDirectoryOnly ); foreach( string a in list ) { Console.Write( a + " -> " ); Regex regex = new Regex( @"[0-9]+.JPG" ); MatchCollection matchCol = regex.Matches( a, 0 ); string new_name = PATH + String.Format( "img_{0}", matchCol[0].Value ); File.Move( a, new_name ); Console.WriteLine( new_name ); } Console.ReadKey(); } } }