inohilog

/var/log/inohiro.log

久しぶりに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();
		}
	}
}

*1:言い訳: 最初はRubyで書き始めたが、コーディングと実行の環境が良くなかった(あわなかった)ので、ついカッとなってC#でやった。