2010年7月29日

ファイル名も態度も、小さく控えめのほうがいい

単純にファイル名を小文字化したいだけです。

古い人間は自分が見やすいように大文字や小文字を織りまぜてファイルを作ります。

まあ、別に普通に使うには何ら問題ないんですが。


「DBとかにファイル名を格納し、ソートすると爆死する」(*/∀\*)

ので一旦綺麗に小文字化しましょう。という話です。
大文字じゃないのは単に自分の好みですw









こちらが完成品のイメージです。

実際に作ったのはもうちょっと業務で使えるような文面ですが、
自分用にはこんなゆるーい表現のほうが使いやすいです。

バグも愛嬌!
エラーが出たらその時直せばいい!
100%の稼働率なんて幻想だ!

というわけでまずはデザインのソースから
あ、当然C#で作ってます(ノ∀`*)



  1. namespace FileName_small
  2. {
  3.         partial class Form1
  4.         {
  5.                 ///
  6.                 /// 必要なデザイナ変数です。
  7.                 ///
  8.                 private System.ComponentModel.IContainer components = null;
  9.  
  10.                 ///
  11.                 /// 使用中のリソースをすべてクリーンアップします。
  12.                 ///
  13.                 /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。
  14.                 protected override void Dispose(bool disposing)
  15.                 {
  16.                         if (disposing && (components != null))
  17.                         {
  18.                                 components.Dispose();
  19.                         }
  20.                         base.Dispose(disposing);
  21.                 }
  22.  
  23.                 #region Windows フォーム デザイナで生成されたコード
  24.  
  25.                 ///
  26.                 /// デザイナ サポートに必要なメソッドです。このメソッドの内容を
  27.                 /// コード エディタで変更しないでください。
  28.                 ///
  29.                 private void InitializeComponent()
  30.                 {
  31.                         this.textBox1 = new System.Windows.Forms.TextBox();
  32.                         this.label1 = new System.Windows.Forms.Label();
  33.                         this.button1 = new System.Windows.Forms.Button();
  34.                         this.label2 = new System.Windows.Forms.Label();
  35.                         this.textBox2 = new System.Windows.Forms.TextBox();
  36.                         this.label3 = new System.Windows.Forms.Label();
  37.                         this.label4 = new System.Windows.Forms.Label();
  38.                         this.label5 = new System.Windows.Forms.Label();
  39.                         this.SuspendLayout();
  40.                         //
  41.                         // textBox1
  42.                         //
  43.                         this.textBox1.Location = new System.Drawing.Point(14132);
  44.                         this.textBox1.Name = "textBox1";
  45.                         this.textBox1.Size = new System.Drawing.Size(49919);
  46.                         this.textBox1.TabIndex = 2;
  47.                         //
  48.                         // label1
  49.                         //
  50.                         this.label1.AutoSize = true;
  51.                         this.label1.Location = new System.Drawing.Point(6135);
  52.                         this.label1.Name = "label1";
  53.                         this.label1.Size = new System.Drawing.Size(4012);
  54.                         this.label1.TabIndex = 1;
  55.                         this.label1.Text = "フォルダ";
  56.                         //
  57.                         // button1
  58.                         //
  59.                         this.button1.Location = new System.Drawing.Point(259113);
  60.                         this.button1.Name = "button1";
  61.                         this.button1.Size = new System.Drawing.Size(20623);
  62.                         this.button1.TabIndex = 6;
  63.                         this.button1.Text = "実行";
  64.                         this.button1.UseVisualStyleBackColor = true;
  65.                         this.button1.Click += new System.EventHandler(this.button1_Click);
  66.                         //
  67.                         // label2
  68.                         //
  69.                         this.label2.AutoSize = true;
  70.                         this.label2.Location = new System.Drawing.Point(6174);
  71.                         this.label2.Name = "label2";
  72.                         this.label2.Size = new System.Drawing.Size(4112);
  73.                         this.label2.TabIndex = 4;
  74.                         this.label2.Text = "拡張子";
  75.                         //
  76.                         // textBox2
  77.                         //
  78.                         this.textBox2.Location = new System.Drawing.Point(14172);
  79.                         this.textBox2.Name = "textBox2";
  80.                         this.textBox2.Size = new System.Drawing.Size(10019);
  81.                         this.textBox2.TabIndex = 5;
  82.                         //
  83.                         // label3
  84.                         //
  85.                         this.label3.AutoSize = true;
  86.                         this.label3.Location = new System.Drawing.Point(344143);
  87.                         this.label3.Name = "label3";
  88.                         this.label3.Size = new System.Drawing.Size(36412);
  89.                         this.label3.TabIndex = 7;
  90.                         this.label3.Text = "実行前に読み取り専用は外しておいてね。ハングすっからヾ(;´▽`A``アセアセ";
  91.                         //
  92.                         // label4
  93.                         //
  94.                         this.label4.AutoSize = true;
  95.                         this.label4.Location = new System.Drawing.Point(50555);
  96.                         this.label4.Name = "label4";
  97.                         this.label4.Size = new System.Drawing.Size(15212);
  98.                         this.label4.TabIndex = 3;
  99.                         this.label4.Text = "サブフォルダは見に行かないです";
  100.                         //
  101.                         // label5
  102.                         //
  103.                         this.label5.AutoSize = true;
  104.                         this.label5.Location = new System.Drawing.Point(468);
  105.                         this.label5.Name = "label5";
  106.                         this.label5.Size = new System.Drawing.Size(61312);
  107.                         this.label5.TabIndex = 0;
  108.                         this.label5.Text = "指定したフォルダの指定した拡張子のファイルを全部小文字にリネームってか置き換え。とっても処理は雑です( v ̄▽ ̄) イエーイ♪";
  109.                         //
  110.                         // Form1
  111.                         //
  112.                         this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
  113.                         this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
  114.                         this.ClientSize = new System.Drawing.Size(723162);
  115.                         this.Controls.Add(this.label5);
  116.                         this.Controls.Add(this.label4);
  117.                         this.Controls.Add(this.label3);
  118.                         this.Controls.Add(this.textBox2);
  119.                         this.Controls.Add(this.label2);
  120.                         this.Controls.Add(this.button1);
  121.                         this.Controls.Add(this.label1);
  122.                         this.Controls.Add(this.textBox1);
  123.                         this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
  124.                         this.Name = "Form1";
  125.                         this.Text = "ファイル名小文字化(というより強制リネームツール)";
  126.                         this.ResumeLayout(false);
  127.                         this.PerformLayout();
  128.  
  129.                 }
  130.  
  131.                 #endregion
  132.  
  133.                 private System.Windows.Forms.TextBox textBox1;
  134.                 private System.Windows.Forms.Label label1;
  135.                 private System.Windows.Forms.Button button1;
  136.                 private System.Windows.Forms.Label label2;
  137.                 private System.Windows.Forms.TextBox textBox2;
  138.                 private System.Windows.Forms.Label label3;
  139.                 private System.Windows.Forms.Label label4;
  140.                 private System.Windows.Forms.Label label5;
  141.         }
  142. }


そしてメインのソースです。
つーかデザインより短いのよ(。-∀-)ノ


  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8.  
  9. namespace FileName_small
  10. {
  11.         public partial class Form1 : Form
  12.         {
  13.                 public Form1()
  14.                 {
  15.                         InitializeComponent();
  16.                 }
  17.  
  18.                 private void button1_Click(object sender, EventArgs e)
  19.                 {
  20.                         if (textBox1.Text == string.Empty || textBox2.Text == string.Empty)
  21.                         {
  22.                                 MessageBox.Show("未入力項目があります""入力確認");
  23.                                 return;
  24.                         }
  25.                         string pass = string.Empty;
  26.                         string[] files = System.IO.Directory.GetFiles(textBox1.Text"*." + textBox2.Text,System.IO.SearchOption.TopDirectoryOnly);
  27.                         if(textBox1.Text.EndsWith("\\"))
  28.                         {
  29.                                 pass = textBox1.Text;
  30.                         }
  31.                         else
  32.                         {
  33.                                 pass = textBox1.Text + "\\";
  34.                         }
  35.  
  36.                         //小文字化
  37.                         if (files.Length != 0)
  38.                         {
  39.                                 for(int i = 0; i< files.Length;i++)
  40.                                 {
  41.                                         string filename_s = files[i].Replace(textBox1.Text"").Replace("\\","").ToLower();
  42.                                         //変換
  43.                                         try
  44.                                         {
  45.                                                 System.IO.File.Move(files[i], pass + filename_s);
  46.                                         }
  47.                                         catch
  48.                                         {
  49.                                                 MessageBox.Show("変換エラーが発生しました","変換エラー");
  50.                                         }
  51.                                 }
  52.                                 MessageBox.Show("変換が完了しました","変換完了");
  53.                         }
  54.                         else
  55.                         {
  56.                                 MessageBox.Show("条件に該当するファイルは存在しません","対象ファイルなし");
  57.                         }
  58.                 }
  59.         }
  60. }




大文字化するならLowerしてるとこをUpperに変えるだけですし

なんか使えますかね?このソース(爆)