2016-04-20 2 views
1

パスのリストの.txtファイルを読み取り、コピーで使用するツールがあります。リダイレクトを有効にすると特別なフォルダのパスを取得できません

***DESTINATION*** 
E:\Backup 
***Sources*** 
%USERPROFILE%\Pictures 
%USERPROFILE%\Favourites 
%USERPROFILE%\Contacts 
%USERPROFILE%\My Videos 

私のシステムでは、フォルダのリダイレクトが有効になっているので、「画像」は実際にはD:\ Adam \ Picturesです。ただし、次のコードを使用すると、C:\ Adam \ Picturesとしてのみ解決され、「パスが見つかりません」エラーがスローされます。

'Declarations earlier in script 
Dim Destpath As String = System.IO.File.ReadAllLines(Application.StartupPath + "\CONFIG.txt")(1) 
Dim userprofilevar = (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)) 

'Snippet of line reading logic  
      ElseIf line.Contains("%USERPROFILE%") Then 
       Dim lineArray() As String = line.Split("\") 
       Dim lineuser As String = userprofilevar + "\" 
       Dim linepath As String = lineArray(1) 
       line = lineuser + linepath 
       Destpath = String.Concat(Destpath, "\", linepath) 
       MessageBox.Show(Destpath) 
      Else 

%USERPROFILE%変数によってリダイレクトされたフォルダの正しいパスを解決する方法を知っている人はいますか?

VB.NETにAlexBの例@に変換し、それは私のアプリで働いて取得した後、私は単純に文字列として%Userprofile%フォルダのそれぞれを宣言した後、ライン読みロジックはline文字列を更新している:私が見つけ

+1

これはおそらく助けることができるhttp://www.codeproject.com/Articles/878605/Getting-All-Special-Folders-in-NET –

+0

@AlexB。ありがとう!あなたの例を自分のコードに適合させることができました。今、私の問題は 'KnownFolders'をチェックし、whatsとの関係で正しいパスを返すために、行にあるものを相互参照することになります。どのようにそれを行うにはどのようなアイデア? – Adam

+0

大変申し訳ありませんが、記事を見つけました。たぶん別の人がそれに答えるか、記事の作者に連絡してください。 –

答えて

0

ソリューション正しいフォルダパスとして:

'Declarations as start of Form 
Dim downloadsPath As String = KnownFolders.GetPath(KnownFolder.Downloads) 
Dim contactspath As String = KnownFolders.GetPath(KnownFolder.Contacts) 

'Snippit of line reading logic 
      ElseIf line.Contains("%USERPROFILE%\Downloads") Then 
       line = downloadspath 
      ElseIf line.Contains("%USERPROFILE%\Contacts") Then 
       line = contactspath 

それはすべての11の%Userprofile%フォルダに対して行うことはかなりではないが、それは働きます!

関連する問題