2010-11-06 34 views
1

J'ai cette voie d'application:C chemin de l'application # trim

C: \ Documents and Settings \ david \ Mes documents \ app \

Et un chemin de fichier:

C: \ Documents et paramètres \ david \ Mes documents \ app \ stuff \ file.txt

Comment Je coupe le chemin de l'application depuis le chemin du fichier pour qu'il devienne stuff \ file.txt? Raison étant l'un des outils de ligne de commande que j'utilise ne supporte pas les espaces dans le chemin du fichier.

+2

Juste une supposition, mais avez-vous essayé d'envelopper le chemin dans la parenthèse '" 'lors de la fourniture à votre co mm et outils de ligne? – Peter

+0

Je me sens comme un idiot, merci de me le faire savoir. Cela fonctionne bien lorsque vous enfermez le chemin avec eux. – david

Répondre

2

Essayez ceci:

Uri path = new Uri(@"C:\Documents and Settings\david\My Documents\app\stuff\file.txt"); 
Uri workingDirectory = new Uri(Directory.GetCurrentDirectory()); 
string relativePath = workingDirectory.MakeRelativeUri(path).ToString(); 

documentation connexe:

+0

Même si je me suis rendu compte que j'avais oublié d'inclure le chemin dans la paranthésis, cela me sera très utile. Merci. – david

0

je ne sais pas quelle commande de l'outil que vous utilisez, mais normalement ils travaillent si nous joignons la chaîne/chemin entre guillemets comme ceci

« C: \ Documents and Settings \ david \ Mes documents \ app \ choses \ fichier.txt »

0

Je ne sais pas pourquoi chaîne normale remplacer ne fera pas:

string filePath = @"C:\Documents and Settings\david\My Documents\app\stuff\file.txt"; 
string appPath = @"C:\Documents and Settings\david\My Documents\app\"; 
string trimmed = filePath.Replace(appPath, ""); 

Cependant, si vous placez simplement le chemin complet entre guillemets ("), la plupart des outils de ligne de commande seront amende avec des espaces:

string escapedPath = @"""C:\Documents and Settings\david\My Documents\app\stuff\file.txt""";