Beispiel #1
0
        private void button2_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            var settingstr = $"{textBox1.Text}\n{textBox2.Text}";

            File.WriteAllText(SettingFile, settingstr);
            var task = new Task(() =>
            {
                foreach (var file in Directory.EnumerateFiles(textBox1.Text, "*.rep"))
                {
                    var prop = ReplayReader.Open(file);
                    this.Invoke((Action <string>)Log, $"--{file}");
                    var fi      = new FileInfo(file);
                    var result  = fi.DirectoryName + "\\" + textBox2.Text;
                    var results = pattern.Matches(result);
                    if (results.Count > 0)
                    {
                        foreach (Match mat in results)
                        {
                            if (!propIndex.ContainsKey(mat.Groups[1].Value))
                            {
                                this.Invoke((Action <string>)Log, $"无效的匹配字段{mat.Groups[1].Value},结束重命名过程");
                                return;
                            }

                            int index  = propIndex[mat.Groups[1].Value];
                            string val = prop[index].Replace("\\", "");
                            if (index == 14 || index == 16)
                            {
                                var bytes = Encoding.GetEncoding("Shift_JIS").GetBytes(val);
                                val       = Encoding.Default.GetString(bytes);
                            }

                            result = result.Replace(mat.Groups[0].Value, val);
                        }

                        try
                        {
                            File.Move(file, result);
                            this.Invoke((Action <string>)Log, $"重命名为{result}");
                        }
                        catch (Exception ex)
                        {
                            this.Invoke((Action <string>)Log, "重命名失败!");
                            foreach (var str in ex.ToString().Split('\n'))
                            {
                                this.Invoke((Action <string>)Log, str);
                            }
                        }
                    }
                    else
                    {
                        this.Invoke((Action <string>)Log, $"未找到匹配字段,结束重命名过程");
                        return;
                    }
                }

                this.Invoke((Action <string>)Log, "----重命名结束!");
            });

            task.Start();
        }