2016-09-05 10 views
1

名に角括弧有している場合、ファイル・パスの読み方:フォルダは次のように私は、ファイルのパスを持っている

C:\Recordings\Public\20160901\[MYPC] 

私は

は、私が読んしようとしていたフォルダの形式を変更することはできませんが私は次のようなエラーが供給しています

foreach (string file in Directory.EnumerateFiles(args[0], "*.*")) 
{ 
    string contents = File.ReadAllText(file); 
    Console.WriteLine(contents); 
} 

次のコードを使用して、フォルダの内容
Unhandled Exception: System.NotSupportedException: The given path's format is not supported. 

これまでpowershellでこのメソッドを使用していたため、大きな結果が得られたことがわかりましたが、それはc#で動作するようには見えません。私は、CMD行args [0](コンソールアプリケーション)経由で読み取りパスを設定しています

すべてのアイデア/ポインタは大歓迎です。私は私にエラーを与え、次のと私のアプリケーションを呼び出した

UPDATE

myapp.exe "c:\My Recordings\Public\20160905\[CDPC]\" 

以下はしませんでした:

myapp.exe "c:\My Recordings\Public\20160905\[CDPC]" 
+0

醜い回避策はと悪い文字の各インスタンスの接頭辞である「\\」(これはただ一つの文字で、エスケープ) –

+0

ことができませんあなたの問題を複製する:それは私のために働いていますあなたは特別なトリックは必要ありません、単にコマンドラインで引数としてパスを入力する –

+0

うーん...それはargs [1]ではないでしょうか? args [0]には通常ファイルの実行可能ファイル名が入っています – Pikoh

答えて

1

は、単純にラッピング引用符を削除し、存在する場合は

foreach (string file in Directory.EnumerateFiles(args[0].Replace("\"",""), "*.*")) 
      { 
       string contents = File.ReadAllText(file); 
       Console.WriteLine(contents); 
      } 
また、正規表現で(より正確に)行うことができます

Regex.Replace(args[0], "(^\")|(\"$)", "") //instead of args[0].Replace("\"","") 
関連する問題