using System; using System.Text; using System.IO;class MyCommand {
  public string Ruta = "C:\\"; /* @"C:\" */
public string[] Dir() {
  string[] dirs = Directory.GetDirectories(Ruta);
  for (int i = 0; i < dirs.Length; i++) {
  dirs[i] = "[ " + Path.GetFileName(dirs[i]) + " ]";
  }
  string[] files = Directory.GetFiles(Ruta);
  for (int i = 0; i < files.Length; i++){
  files[i] = Path.GetFileName(files[i]);
  }
  int spots = dirs.Length + files.Length;
  string[] items = new string[spots];
  for (int i = 0; i < dirs.Length; i++) {
  items[i] = dirs[i];
  }
  for (int i = 0; i < files.Length; i++) {
  items[i + dirs.Length] = files[i];
  }
  return items;
  }

public string ChangeDir(string dirname) {
  string r = "";
  if (Directory.Exists(Ruta + "/" + dirname))
  {
  Ruta += "/" + dirname;
  Ruta = Path.GetFullPath(Ruta);
  r = " --dir actual: " + Ruta;
  }else {
  r = " --dir ["+dirname+"] no existe!";
  }
  return r;
  }

public string ReadFile(string filename_, bool addLineNumber) {
  string regresarEsto = "";
  if (File.Exists(Ruta + "/" + filename_))
  {
  StreamReader sr = new StreamReader(Ruta + "/" + filename_);
  if (addLineNumber) {
  string line = sr.ReadLine();
  StringBuilder sb = new StringBuilder();
  int count = 0;
  while (line != null) {
  count++; //count += 1;
  sb.Append(count.ToString() + ": " + line).Append("\n");
  line = sr.ReadLine();
  }
  regresarEsto = sb.ToString();
  } else {
  regresarEsto = sr.ReadToEnd();
  }
  sr.Close();
  }else {
  regresarEsto = " archivo ["+filename_+"] no existe!";
  }
  return regresarEsto;
  }

public void Log(string text) {
  StreamWriter sw = new StreamWriter(@"C:\cmd.txt",true);
  sw.WriteLine(text);
  sw.Close();
  }

public Fichero Info(string filename_) {
  if (File.Exists(Ruta + "/" + filename_)){
  Fichero f = new Fichero();
  FileInfo fi =
 new FileInfo(Ruta + "/" + filename_);
  f.Bytes = fi.Length;
  f.Actualizado = fi.LastWriteTime;
  f.SoloLectura = fi.IsReadOnly;
  return f;
  }else{
  return new Fichero();
  }
}

public Drive InfoDD(string driveletter){
  try {
  Drive d = new Drive();
  DriveInfo di = new DriveInfo(driveletter);
  try{d.EspacioLibre=di.AvailableFreeSpace }catch{}
  try { d.Etiqueta = di.VolumeLabel; } catch { }
  try { d.Formato = di.DriveFormat; } catch { }
  try { d.Tamanho = di.TotalSize; } catch { }
  d.Tipo = di.DriveType.ToString();
  return d;
  }catch {
  return new Drive();
  }
}

}

Clases de Soporte

public class Fichero {
  public long Bytes = 0;
  public DateTime Actualizado =
  DateTime.Now.AddYears(-10);
  public bool SoloLectura = false;
}
public class Drive {
  public long EspacioLibre = 0;
  public long Tamanho = -1;
  public string Etiqueta = "";
  public string Formato = "";
  public string Tipo = "";
}
aplicacion de consola que utiliza la class MyCommand:

using System; using System.Text;class Program{
  static void Main(string[] args){
  ConsoleColor clr = Console.ForegroundColor; ConsoleColor clrUsr = ConsoleColor.Green;
  Console.BackgroundColor = ConsoleColor.Black;
  Console.Title = "myC[#]ommand"; Console.WriteLine("Bienvenido a c#md...");
  Console.WriteLine(" comandos implementados: cd, dir, ruta, info, infodd, type");
  Console.WriteLine(" ---- Teclee 'q'+[Enter] para salir... ----");
  MyCommand cmd = new MyCommand();
  while (true) {
  Console.Write("> "); Console.ForegroundColor = clrUsr;
  string operacion = Console.ReadLine();
  if (operacion.ToLower() == "q") break;
  string[] parametros = operacion.Split(' '); Console.ForegroundColor = clr;
  cmd.Log(DateTime.Now + ": " + operacion);
  bool sintaxisError = false;
  switch (parametros[0].ToLower()) {
  case "cd":
  if (parametros.Length < 2){
  Console.WriteLine(" --sintaxis: cd ");
  sintaxisError = true;
  }
  if (sintaxisError) break;
  Console.WriteLine(cmd.ChangeDir(parametros[1])); break;
  case "dir":
  string[] items = cmd.Dir();
  for (int i = 0; i < items.Length; i++){
  Console.WriteLine(items[i]);
  } break;
  case "ruta":
  Console.WriteLine(cmd.Ruta); break;
  case "info":
  if (parametros.Length < 2) {
  Console.WriteLine(" --sintaxis: info ");
  sintaxisError = true;
  }
  if (sintaxisError) break;
  Fichero archivo = cmd.Info(parametros[1]);
  if (archivo.Bytes > 0){
  Console.WriteLine(" Tamanho(bytes): "+archivo.Bytes+"");
  Console.WriteLine(" Actualizado: " + archivo.Actualizado);
  Console.WriteLine(" SoloLectura: " + archivo.SoloLectura);
  }else {
  Console.WriteLine(" archivo ["+parametros[1]+"] no existe!");
  } break;
  case "infodd":
  if (parametros.Length < 2){
  Console.WriteLine(" --sintaxis: infodd ");
  sintaxisError = true;
  }
  if (sintaxisError) break;
  Drive disco = cmd.InfoDD(parametros[1]);
  if (disco.Tamanho != -1){
  Console.WriteLine(" Tamanho(bytes): " + disco.Tamanho + "");
  Console.WriteLine(" Espacio Libre: " + disco.EspacioLibre);
  Console.WriteLine(" " + (disco.EspacioLibre*100/disco.Tamanho)+ " %");
  Console.WriteLine(" Etiqueta: " + disco.Etiqueta);
  Console.WriteLine(" Formato: " + disco.Formato);
  Console.WriteLine(" Tipo: " + disco.Tipo);
  }else{
  Console.WriteLine(" disco [" + parametros[1] + "] no existe!");
  } break;
  case "type":
  if (parametros.Length < 2){
  Console.WriteLine(" --sintaxis: type []");
  sintaxisError = true;
  }
  if (sintaxisError) break;
  if((parametros.Length == 2)&&(parametros.Length != 1))
  Console.WriteLine(cmd.ReadFile(parametros[1],false));
  else
  Console.WriteLine(cmd.ReadFile(parametros[1],true));
  break;
  default:
  Console.WriteLine("-???-");
  break;
  }
  } } } }

Anuncios