HINWEIS: In diesem Beispielcode öffnen wir ein Verzeichnis und suchen nach PDF-Dateien mit offenen und geschlossenen Klammern im Namen der Datei. Sie können jedes beliebige Zeichen im Namen prüfen und ersetzen oder mit den Ersetzungsfunktionen einen ganz neuen Namen angeben.
Es gibt andere Möglichkeiten, mit diesem Code zu arbeiten, um aufwändigere Umbenennungen vorzunehmen, aber ich wollte vor allem zeigen, wie man mit File.Move eine Stapelumbenennung vornimmt. Dies funktionierte mit 335 PDF-Dateien in 180 Verzeichnissen, als ich es auf meinem Laptop ausführte. Dies ist ein spontaner Code, und es gibt ausgefeiltere Möglichkeiten, dies zu tun.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BatchRenamer
{
class Program
{
static void Main(string[] args)
{
var dirnames = Directory.GetDirectories(@"C:\the full directory path of files to rename goes here");
int i = 0;
try
{
foreach (var dir in dirnames)
{
var fnames = Directory.GetFiles(dir, "*.pdf").Select(Path.GetFileName);
DirectoryInfo d = new DirectoryInfo(dir);
FileInfo[] finfo = d.GetFiles("*.pdf");
foreach (var f in fnames)
{
i++;
Console.WriteLine("The number of the file being renamed is: {0}", i);
if (!File.Exists(Path.Combine(dir, f.ToString().Replace("(", "").Replace(")", ""))))
{
File.Move(Path.Combine(dir, f), Path.Combine(dir, f.ToString().Replace("(", "").Replace(")", "")));
}
else
{
Console.WriteLine("The file you are attempting to rename already exists! The file path is {0}.", dir);
foreach (FileInfo fi in finfo)
{
Console.WriteLine("The file modify date is: {0} ", File.GetLastWriteTime(dir));
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();
}
}
}
2 Stimmen
Ich würde ungern hinzufügen, dass es ein Problem hier alle Lösungen hier vor allem, wenn Sie tun, vergleicht und verschieben die Datei von einem Speicherort zu einem anderen (Verzeichnis sowie Dateiname) insofern, als Sie sollten sich bewusst sein, dass ein Datenträger ein Knotenpunkt sein könnte... also wenn newname ist q: \SomeJunctionDirectory\hello.txt und der alte Name ist c: \TargetOfJunctionPoint\hello.txt... Die Dateien sind identisch, aber die Namen sind es nicht.