C#将制定目录文件名转换成大写的方法

前端技术 2023/09/05 C#

本文实例讲述了C#将制定目录文件名转换成大写的方法。分享给大家供大家参考。具体如下:

using System;
using System.IO;
using System.Linq;
namespace RobvanderWoude
{
 class UpCase
 {
  static int Main( string[] args )
  {
   string dir = string.Empty;
   string filespec = string.Empty;
   char[] trailingbackslash = \"\\\\\".ToCharArray( 0, 1 );
   char[] locaseletters = \"abcdefghijklmnopqrstuvwxyz\".ToCharArray( 0, 26 );
   bool verbose = false;
   #region Command Line Parsing
   switch ( args.Length )
   {
    case 0:
     return WriteError( string.Empty );
    case 1:
     filespec = args[0].Trim( \'\"\' );
     break;
    case 2:
     filespec = args[0].Trim( \'\"\' );
     if ( args[1].Substring( 0, 2 ).ToUpper( ) == \"/V\" )
     {
      verbose = true;
     }
     else
     {
      return WriteError( \"Invalid command line switch: \" + args[1] );
     }
     break;
    default:
     return WriteError( string.Empty );
   }
   if ( string.IsNullOrWhiteSpace( filespec ) || filespec == \"/?\" )
   {
    return WriteError( string.Empty );
   }
   if ( filespec.IndexOfAny( \"/?\".ToCharArray( 0, 2 ) ) != -1 )
   {
    return WriteError( \"Invalid file specification: \\\"\" + filespec + \"\\\"\" );
   }
   #endregion Command Line Parsing
   try
   {
    // Check if the directory exists
    try
    {
     dir = Path.GetDirectoryName( filespec );
     if ( string.IsNullOrWhiteSpace( dir ) )
     {
      dir = Path.GetFullPath( \".\" );
     }
     if ( !Directory.Exists( dir ) )
     {
      return WriteError( \"Directory not found: \\\"\" + dir + \"\\\"\" );
     }
     dir = dir.TrimEnd( trailingbackslash ) + \"\\\\\";
    }
    catch ( ArgumentException )
    {
     return WriteError( \"Parent directory not found\" );
    }
    // Extract the FILE specification (removing the path)
    string filenames = filespec.Substring( filespec.LastIndexOf( \"\\\\\" ) + 1 );
    // Enumerate the files
    string[] files = Directory.EnumerateFiles( dir, filenames ).ToArray<string>( );
    int count = 0;
    foreach ( string file in files )
    {
     if ( File.Exists( file ) )
     {
      string filename = Path.GetFileName( file );
      if ( filename.IndexOfAny( locaseletters ) > -1 )
      {
       count++;
       string newfilename = dir + filename.ToUpperInvariant( );
       File.Move( file, newfilename );
      }
     }
    }
    if ( verbose )
    {
     Console.WriteLine( \"{0} matching file{1} renamed\", ( count == 0 ? \"No\" : count.ToString( ) ), ( count == 1 ? string.Empty : \"s\" ) );
    }
    return count;
   }
   catch ( Exception e )
   {
    return WriteError( e.Message );
   }
  }
  public static int WriteError( Exception e )
  {
   return WriteError( e == null ? null : e.Message );
  }
  public static int WriteError( string errorMessage )
  {
   /*
   UpCase.exe, Version 1.02
   Rename specified files to all upper case
   Usage:  UpCase.exe filespec [ /Verbose ]
   Where:  filespec  is (are) the file(s) to be renamed (wildcards allowed)
        /Verbose  displays the number of files renamed
   Notes:  Use doublequotes if filespec contains spaces.
        Return code (\\\"ErrorLevel\\\") equals the number of renamed files.
        Switch may be abbreviated, e.g. /V instead of /Verbose.
   Written by Rob van der Woude
   */
   if ( !string.IsNullOrWhiteSpace( errorMessage ) )
   {
    Console.Error.WriteLine( );
    Console.ForegroundColor = ConsoleColor.Red;
    Console.Error.Write( \"ERROR: \" );
    Console.ForegroundColor = ConsoleColor.White;
    Console.Error.WriteLine( errorMessage );
    Console.ResetColor( );
   }
   Console.Error.WriteLine( );
   Console.Error.WriteLine( \"UpCase.exe, Version 1.02\" );
   Console.Error.WriteLine( \"Rename specified files to all upper case\" );
   Console.Error.WriteLine( );
   Console.Error.Write( \"Usage:  \" );
   Console.ForegroundColor = ConsoleColor.White;
   Console.Error.WriteLine( \"UpCase.exe filespec [ /Verbose ]\" );
   Console.ResetColor( );
   Console.Error.WriteLine( );
   Console.Error.Write( \"Where:  \" );
   Console.ForegroundColor = ConsoleColor.White;
   Console.Error.Write( \"filespec\" );
   Console.ResetColor( );
   Console.Error.WriteLine( \"  is (are) the file(s) to be renamed (wildcards allowed)\" );
   Console.ForegroundColor = ConsoleColor.White;
   Console.Error.Write( \"     /V\" );
   Console.ResetColor( );
   Console.Error.WriteLine( \"erbose  displays the number of files renamed\" );
   Console.Error.WriteLine( );
   Console.Error.WriteLine( \"Note:   Use doublequotes if filespec contains spaces.\" );
   Console.Error.WriteLine( \"     Return code (\\\"ErrorLevel\\\") equals the number of renamed files.\" );
   Console.Error.Write( \"     Switch may be abbreviated, e.g. \" );
   Console.ForegroundColor = ConsoleColor.White;
   Console.Error.Write( \"/V\" );
   Console.ResetColor( );
   Console.Error.Write( \" instead of \" );
   Console.ForegroundColor = ConsoleColor.White;
   Console.Error.Write( \"/V\" );
   Console.ResetColor( );
   Console.Error.WriteLine( \"erbose.\" );
   Console.Error.WriteLine( );
   Console.Error.WriteLine( \"Written by Rob van der Woude\" );
   Console.Error.WriteLine( \"http://www.baidu.com\" );
   return 0;
  }
 }
}

希望本文所述对大家的C#程序设计有所帮助。

本文地址:https://www.stayed.cn/item/12499

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。