Exemplo n.º 1
0
 /// <summary>
 /// クロール実行時の更新
 /// </summary>
 /// <param name="crawlTime">クロール日時</param>
 /// <param name="selectedTargetDirPaths">検索対象として選択したフォルダパス一覧。指定なし時(設定された検索対象フォルダが1件しかない場合含む)はnull</param>
 public void SaveOnCrawl(DateTime crawlTime, IEnumerable <string> selectedTargetDirPaths = null)
 {
     PlainData.LastCrawlTime = crawlTime;
     if (selectedTargetDirPaths != null)
     {
         // 「選択から除外されたフォルダパスの一覧」を記憶
         var settingDirPaths = TargetFolders.Select(f => f.Path);
         PlainData.LastExcludingDirPaths = settingDirPaths.Except(selectedTargetDirPaths).ToList();
     }
     else
     {
         PlainData.LastExcludingDirPaths = null;
     }
     Save();
 }
Exemplo n.º 2
0
 static void Main(string[] args)
 {
     TargetFolders.Create();
     Files.Sort();
 }
Exemplo n.º 3
0
        private Task ProcessList()
        {
            return(Task.Factory.StartNew(() =>
            {
                int i = 0;
                foreach (string pathSource in SourceFolders)
                {
                    string folderName = Path.GetFileName(pathSource);
                    try
                    {
                        if (TargetFolders.Contains(txtTarget.Text.TrimEnd('\\') + "\\" + folderName))
                        {
                            DispatcherOperation <bool> inv = _dispatcher.InvokeAsync(() =>
                            {
                                DialogResult dialogResult = MessageBox.Show("El directorio '" + folderName + "' existe en el destino, reemplazar?", "SymLink Tool", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                                if (dialogResult == DialogResult.No)
                                {
                                    return false;
                                }
                                else
                                {
                                    lbOutput.Text = string.Format("Eliminando '{0}' de la ruta '{1}'", folderName, txtTarget.Text);
                                    return true;
                                }
                            });
                            if (inv.Result)
                            {
                                Directory.Delete(txtTarget.Text.TrimEnd('\\') + "\\" + folderName, true);
                            }
                            else
                            {
                                continue;
                            }
                        }

                        _dispatcher.Invoke(() =>
                        {
                            lbOutput.Text = string.Format("copiando '{0}' a la ruta '{1}'", folderName, txtTarget.Text);
                        });
                        DirectoryCopy(pathSource, txtTarget.Text.TrimEnd('\\') + "\\" + folderName, true);

                        _dispatcher.Invoke(() =>
                        {
                            lbOutput.Text = string.Format("borrando '{0}' de la ruta '{1}'", folderName, txtSource.Text);
                        });
                        Directory.Delete(pathSource, true);

                        _dispatcher.Invoke(() =>
                        {
                            lbOutput.Text = string.Format("aplicando link simbolico a '{0}' en la ruta '{1}'", folderName, txtTarget.Text);
                        });

                        string cmd = "/C mklink /d \"" + pathSource + "\" \"" + txtTarget.Text.TrimEnd('\\') + "\\" + folderName.TrimEnd('\\') + "\"";
                        System.Diagnostics.Process.Start("cmd.exe", cmd);
                        _dispatcher.Invoke(() =>
                        {
                            lbOutput.Text = string.Format("link simbolico aplicado correctamente a '{0}'", folderName, txtTarget.Text);
                        });
                    }
                    catch (System.IO.IOException ioex)
                    {
                        _dispatcher.Invoke(() =>
                        {
                            lbOutput.Text = ioex.Message;
                        });
                    }
                    catch (Exception ex)
                    {
                        _dispatcher.Invoke(() =>
                        {
                            lbOutput.Text = ex.Message;
                        });

                        DirectoryCopy(txtTarget.Text.TrimEnd('\\') + "\\" + folderName, pathSource, true);
                        Directory.Delete(txtTarget.Text.TrimEnd('\\') + "\\" + folderName, true);
                    }
                    finally
                    {
                        i++;
                        _dispatcher.Invoke(() =>
                        {
                            pbMain.Value = i;
                        });
                    }
                }
            }));
        }
Exemplo n.º 4
0
            /// <summary>
            /// 文書データのキーを受け取り、その値を元に「その文書を含んでいるすべての対象フォルダ情報」を取得する
            /// </summary>
            /// <param name="key"></param>
            public virtual IEnumerable <TargetFolder> FindTargetFoldersFromDocumentKey(string key)
            {
                var folders = TargetFolders.Where((f) => key.StartsWith(Util.MakeDocumentDirKeyPrefix(f.Path)));

                return(folders);
            }