美文网首页
C#获得本机可用驱动器编号列表的代码

C#获得本机可用驱动器编号列表的代码

作者: hahamama | 来源:发表于2021-11-25 14:58 被阅读0次

下面的代码内容是关于C#获得本机可用驱动器编号列表的代码,希望能对码农们有一些帮助。

using System;

using System.Collections.Generic;

using System.IO;

namespace RobvanderWoude

{

class Drives

{

static int Main( string[] args )

{

bool showused = true;

bool showavailable = true;

bool showtype = false;

bool showNotready = true;

#region Command line parsing

if ( args.Length > 1 )

{

return WriteError( "Too many command line arguments" );

}

if ( args.Length == 1 )

{

if ( args[0].StartsWith( "/" ) || args[0].StartsWith( "-" ) )

{

switch ( args[0].ToUpper( ) )

{

case "/A":

case "-A":

showused = false;

break;

case "/T":

case "-T":

showtype = true;

showavailable = false;

break;

case "/R":

case "-R":

showtype = true;

showavailable = false;

showNotready = false;

break;

case "/U":

case "-U":

showavailable = false;

break;

case "/?":

case "-?":

case "/H":

case "-H":

case "--H":

case "/HELP":

case "-HELP":

case "--HELP":

return WriteError( string.Empty );

default:

return WriteError( "Invalid command line argument" );

}

}

else

{

return WriteError( string.Empty );

}

}

#endregion

if ( showavailable )

{

List<string> letters = new List<string>( );

for ( int i = Convert.ToInt16( 'A' ); i < Convert.ToInt16( 'Z' ); i++ )

{

letters.Add( new string( new char[] { (char) i } ) );

}

foreach ( DriveInfo drive in DriveInfo.GetDrives( ) )

{

letters.Remove( drive.Name.Substring( 0, 1 ).ToUpper( ) );

}

if ( showused )

{

Console.Write( "Available : " );

}

foreach ( string letter in letters )

{

Console.Write( "{0}: ", letter );

}

Console.WriteLine( );

}

if ( showused )

{

if ( showavailable )

{

Console.Write( "Used      : " );

}

foreach ( DriveInfo drive in DriveInfo.GetDrives( ) )

{

if ( showtype )

{

bool isready = drive.IsReady;

if ( showNotready )

{

Console.WriteLine( "{0}t{1,-12}t{2}", drive.Name.Substring( 0, 2 ).ToUpper( ), drive.DriveType, ( isready ? drive.DriveFormat : "-- not ready --" ) );

}

else

{

if ( isready )

{

Console.WriteLine( "{0}t{1,-12}t{2}", drive.Name.Substring( 0, 2 ).ToUpper( ), drive.DriveType, drive.DriveFormat );

}

}

}

else

{

Console.Write( "{0} ", drive.Name.Substring( 0, 2 ).ToUpper( ) );

}

}

Console.WriteLine( );

}

return 0;

}

public static int WriteError( Exception e )

{

return WriteError( e == null ? null : e.Message );

}

public static int WriteError( string errorMessage )

{

Drives,  Version 2.00

List available and/or used drive letters

Usage:  DRIVES  [ /A | /R | /T | /U ]

Where:  /A      lists available drive letters only (default: all)

        /R      skip drives that are not ready    (implies /T)

        /T      display drive type and filesystem  (implies /U)

        /U      lists used drive letters only      (default: all)

Written by Rob van der Woude

string fullpath = Environment.GetCommandLineArgs( ).GetValue( 0 ).ToString( );

string[] program = fullpath.Split( '\' );

string exename = program[program.GetUpperBound( 0 )];

exename = exename.Substring( 0, exename.IndexOf( '.' ) );

if ( string.IsNullOrEmpty( errorMessage ) == false )

{

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( exename + ",  Version 2.00" );

Console.Error.WriteLine( "List available and/or used drive letters" );

Console.Error.WriteLine( );

Console.Error.Write( "Usage:  " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( exename.ToUpper( ) );

Console.ResetColor( );

Console.Error.Write( "  [ " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "/A" );

Console.ResetColor( );

Console.Error.Write( " | " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "/R" );

Console.ResetColor( );

Console.Error.Write( " | " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "/T" );

Console.ResetColor( );

Console.Error.Write( " | " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "/U" );

Console.ResetColor( );

Console.Error.WriteLine( " ]" );

Console.Error.WriteLine( );

Console.Error.Write( "Where:  " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "/A" );

Console.ResetColor( );

Console.Error.Write( "      lists " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "a" );

Console.ResetColor( );

Console.Error.WriteLine( "vailable drive letters only (default: all)" );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "        /R" );

Console.ResetColor( );

Console.Error.Write( "      skip drives that are not " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "r" );

Console.ResetColor( );

Console.Error.Write( "eady    (implies " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "/T" );

Console.ResetColor( );

Console.Error.WriteLine( ")" );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "        /T" );

Console.ResetColor( );

Console.Error.Write( "      display drive " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "t" );

Console.ResetColor( );

Console.Error.Write( "ype and filesystem  (implies " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "/U" );

Console.ResetColor( );

Console.Error.WriteLine( ")" );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "        /U" );

Console.ResetColor( );

Console.Error.Write( "      lists " );

Console.ForegroundColor = ConsoleColor.White;

Console.Error.Write( "u" );

Console.ResetColor( );

Console.Error.WriteLine( "sed drive letters only      (default: all)" );

Console.Error.WriteLine( );

Console.Error.WriteLine( "Written by Rob van der Woude" );

return 1;

}

}

}

相关文章

网友评论

      本文标题:C#获得本机可用驱动器编号列表的代码

      本文链接:https://www.haomeiwen.com/subject/ryoatrtx.html