2016-06-17 19 views
-1

AppData/Localに一部のコンテンツをコピーするための小さなコンソールプログラムを作成する必要があります。c# - Process.StartInfo.Arguments - 空白を含むdirのあるパス

ソースとして、スペースがあるフォルダがあります。それを「My Folder」と呼ぶことができます。私のフォルダには、サブフォルダやその他のコンテンツが含まれています。

だから私は./MyFolderを持っていると私はCにコピーする必要があります。名\のAppData \ローカル\マイフォルダ今

、\ \ユーザー、私がやっていること:

  1. を私は知っています私のフォルダは./

  2. コピーする前に、私は先に作成した 古いゴミ箱を削除する必要があるため、私はAppDataにアクセスできます。

  3. 私は管理者権限があります。

そして今、私はこのコードスニペットを持っている:

Process process = new Process(); 
process.StartInfo.FileName = "xcopy"; 

string stringsource = @"./My Folder"; 
string stringdestination = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 
string all = stringsource + " " + stringdestination + " /e /h /c /I"; 
/*this is for testing, resulting in CORRECT string path*/ 
Console.WriteLine(all); 
process.StartInfo.Arguments = all; 
process.Start(); 

これは、try/catchブロックとエラーなしとの結果です。しかし、宛先AppData/Localには新しいMy Folderはありません。私も試してみました

string stringsource = "./My Folder"; 
string all = @""+stringsource + " " + stringdestination + "/e/h/c/I"; 

を私も試してみました:

process.StartInfo.Arguments = @"./My Folder "+Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+ /e/h/c/I"; 

私も試してみました:それらの

process.StartInfo.Arguments = @"'./My Folder' "+Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+ /e/h/c/I"; 

どれも働きました。コピー中にエラーがなくても、実際にはコンテンツはコピーされません。ここで何が間違っていますか?

+0

スラッシュの後にすべてのスペースとは何ですか?また、ウィンドウではパス区切り文字としてバックスラッシュが使用されます。 – ths

+0

引用符を追加してみてください。あなたは '@'を使っているので、引用符を表示したいところに2つの引用符を追加することでこれを行います: 'Process.StartInfo.Arguments = @" "" "./ My Folder" "" + ... ' '@'がなければ、 '\'でエスケープします: 'Process.StartInfo.Arguments =" \ "./ My Folder \" "+ ...'。 – Quantic

+0

が./に変更されましたが、それでもまだ動作していません....また、/ e ....とその間のスペースを逃しましたが、./と。\ ...の両方の変種を試しましたが、まだ動作しません。 – Zorak

答えて

0

@Quantic解説の鍵(またはむしろ手がかりまたは鉛)だったコメントをありがとう。どのような作品

は次のとおりです。XCOPYツールの入力として必要とされる形式の文字列のパスになり

string all = @"""./My Folder"" """ + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),"My Folder") + "\" /e /h /c /I"; 

"./My Folder" "C:\Users\Name\AppData\My Folder" /e /h /c /I 
関連する問題