Thursday, April 28, 2011

using System;
using System.Runtime.InteropServices;
using System.Text;
using System.IO;

public class _Main
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetShortPathName(
[MarshalAs(UnmanagedType.LPTStr)]
string path,
[MarshalAs(UnmanagedType.LPTStr)]
StringBuilder shortPath,
int shortPathLength
);

public static void Main(string[] args)
{
try
{
StringBuilder shortPath = new StringBuilder(255);
String exepath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
GetShortPathName(exepath, shortPath, shortPath.Capacity);
Console.WriteLine(shortPath.ToString());
if (args.Length>0)
{
foreach (string str in args)
{
string fpth = str.Trim(Path.GetInvalidPathChars());

FileInfo fi = new FileInfo(fpth);
DirectoryInfo di = new DirectoryInfo(fpth);
if (fi.Exists)
{
GetShortPathName(fpth, shortPath, shortPath.Capacity);
Console.WriteLine(shortPath.ToString());
}
else if (di.Exists)
{
GetShortPathName(fpth, shortPath, shortPath.Capacity);
Console.WriteLine(shortPath.ToString());
}
else
{
Console.WriteLine("Given Input path doesnt exits\n");
}
}
}
else
{
Console.WriteLine("Usage:\nShortPath.exe \"c:\\your folder\\Your path\"");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}

0 comments:

My shared items