この問題は、*.FileExtension でファイル リストを使用することによって解決されます。
手順
public static string RarFilesT(string rarPackagePath, Dictionary<int, string> accFiles)
{
string error = "";
try
{
string[] files = new string[accFiles.Count];
int i = 0;
foreach (var fList_item in accFiles)
{
files[i] = "\"" + fList_item.Value;
i++;
}
string fileList = string.Join("\" ", files);
fileList += "\"";
System.Diagnostics.ProcessStartInfo sdp = new System.Diagnostics.ProcessStartInfo();
string cmdArgs = string.Format("A {0} {1} -ep1 -r",
String.Format("\"{0}\"", rarPackagePath),
fileList);
sdp.ErrorDialog = true;
sdp.UseShellExecute = true;
sdp.Arguments = cmdArgs;
sdp.FileName = rarPath;//Winrar.exe path
sdp.CreateNoWindow = false;
sdp.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process process = System.Diagnostics.Process.Start(sdp);
process.WaitForExit();
error = "OK";
}
catch (Exception ex)
{
error = ex.Message;
}
return error;
}
呼び出し手順
private void btnSave_Click(object sender, EventArgs e)
{
Dictionary<int, string> accFiles = new Dictionary<int, string>();
accFiles.Add(1, @"D:\New folder\New folder\*.txt");
accFiles.Add(2, @"D:\New folder\*.html");
RarFilesT(@"D:\test.rar",accFiles );
}
これで、この手順は正常に機能します。選択した拡張子を持つフォルダーの完全バックアップが取得されます。