vez varios una teclado renombrar prefijo pasos parte para nombres nombre masivamente masiva forma diferente con como carpeta cambiar archivos archivo agregar c# .net

c# - varios - pasos para cambiar el nombre de una carpeta o archivo



Cambiar el nombre de algunos archivos en una carpeta (6)

Consulte ¿Cómo puedo cambiar el nombre de un archivo en C #? . No sabía que C# no tiene un cambio de nombre ... Parece que tiene que usar System.IO.File.Move(oldFileName, newFileName)

Tengo la tarea de cambiar los nombres de algunos archivos (es decir, agregar el id a cada nombre dinámicamente) en una carpeta usando C #.

Ejemplo: help.txt a 1help.txt

¿Cómo puedo hacer esto?


Eche un vistazo a FileInfo .

Haz algo como esto:

void RenameThem() { DirectoryInfo d = new DirectoryInfo("c:/dir/"); FileInfo[] infos = d.GetFiles("*.myfiles"); foreach(FileInfo f in infos) { // Do the renaming here File.Move(f.FullName, Path.Combine(f.DirectoryName, "1" + f.Name)); } }


En .NET Framework 4.0 utilizo el método FileInfo.MoveTo() que solo toma 1 argumento

Solo para mover archivos mi método se ve así

private void Move(string sourceDirName, string destDirName) { DirectoryInfo dir = new DirectoryInfo(sourceDirName); FileInfo[] files = null; files = dir.GetFiles(); foreach (FileInfo file in files) { string temppath = Path.Combine(destDirName, file.Name); file.MoveTo(temppath); } }

para cambiar el nombre de los archivos de mi método se ve así

private void Rename(string folderPath) { int fileCount = 0; DirectoryInfo dir = new DirectoryInfo(folderPath); files = dir.GetFiles(); foreach (FileInfo file in files) { fileCount += 1; string newFileName = fileCount.ToString() + file.Name; string temppath = Path.Combine(folderPath, newFileName); file.MoveTo(temppath); } }

Como puede ver para Renombrar archivo, su sintaxis es casi la misma que para MoveTo() , solo necesita modificar el filename del filename antes de usar el método MoveTo() .


La función que está buscando es File.Move(source, destination) del espacio de nombres System.IO . También eche un vistazo a la clase DirectoryInfo (del mismo espacio de nombres) para acceder al contenido de la carpeta.


Puede usar File.Move , así:

string oldFilePath = Path.Combine( Server.MapPath("~/uploads"), "oldFileName"); string newFilePath = Path.Combine( Server.MapPath("~/uploads"), "newFileName"); File.Move(oldFilePath, newFilePath);


Voy a volcar esto aquí porque necesito escribir este código para mis propios fines.

using System; using System.IO; public static class FileSystemInfoExtensions { public static void Rename(this FileSystemInfo item, string newName) { if (item == null) { throw new ArgumentNullException("item"); } FileInfo fileInfo = item as FileInfo; if (fileInfo != null) { fileInfo.Rename(newName); return; } DirectoryInfo directoryInfo = item as DirectoryInfo; if (directoryInfo != null) { directoryInfo.Rename(newName); return; } throw new ArgumentException("Item", "Unexpected subclass of FileSystemInfo " + item.GetType()); } public static void Rename(this FileInfo file, string newName) { // Validate arguments. if (file == null) { throw new ArgumentNullException("file"); } else if (newName == null) { throw new ArgumentNullException("newName"); } else if (newName.Length == 0) { throw new ArgumentException("The name is empty.", "newName"); } else if (newName.IndexOf(Path.DirectorySeparatorChar) >= 0 || newName.IndexOf(Path.AltDirectorySeparatorChar) >= 0) { throw new ArgumentException("The name contains path separators. The file would be moved.", "newName"); } // Rename file. string newPath = Path.Combine(file.DirectoryName, newName); file.MoveTo(newPath); } public static void Rename(this DirectoryInfo directory, string newName) { // Validate arguments. if (directory == null) { throw new ArgumentNullException("directory"); } else if (newName == null) { throw new ArgumentNullException("newName"); } else if (newName.Length == 0) { throw new ArgumentException("The name is empty.", "newName"); } else if (newName.IndexOf(Path.DirectorySeparatorChar) >= 0 || newName.IndexOf(Path.AltDirectorySeparatorChar) >= 0) { throw new ArgumentException("The name contains path separators. The directory would be moved.", "newName"); } // Rename directory. string newPath = Path.Combine(directory.Parent.FullName, newName); directory.MoveTo(newPath); } }