Групповое переименование файлов
Групповое переименование файлов

Групповое переименование файлов

9 февраля 2023       113 просмотров

Вот присылают мне всякое на публикацию, а там говно в комплекте картиночки в количестве от 0 до 20. И каждый раз я ручками их переименовывал, чтобы удобнее было со всем этим безобразием работать. Но в очередной момент подумал: "Хватит это терпеть!" — и решил набросать что-нибудь быстренько, чтобы потом переименовывать всякое сразу скопом и по нажатию на хоткей какой-нибудь, который сам и настрою.

В общем, без лишних разговоров:

using System;
using System.Diagnostics;
using System.IO;

namespace renamer
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var stopwatch = new Stopwatch();//создаем и
            stopwatch.Start();//запускаем счетчик
            string[] files = Directory.GetFiles(@".", "*.*", SearchOption.TopDirectoryOnly);//читаем файлы в текущем каталоге
            for (int i = 0; i < files.Length; i++)//ограничиваемся размером массива
            {
                string name = files[i];//берём имя файла
                name = name.Remove(0, 2);//отсекаем от него ./
                int founddot = name.IndexOf('.');//находим положение точки
                string extension = name.Remove(0, founddot);//и оставляем только расширение
                if (extension == ".exe")
                {
                    Console.WriteLine(name + " — Программы мы переименовывать не собирались");
                }
                else if (i < 10)
                {
                    System.IO.File.Move(files[i], "0" + i + extension);//я люблю когда всё аккуратно
                    Console.WriteLine(name + " renamed to 0" + i + extension);//так что допишем нолик к числам от 0 до 9
                }
                else if (i <= 10 && i < 100)
                {
                    System.IO.File.Move(files[i], i + extension);//а тут уже
                    Console.WriteLine(name + " renamed to " + i + extension);//стесняться не будем
                }
                else
                {
                    Console.WriteLine("Я на такое количество файлов не рассчитывал");//серьезно, мне столько за раз не присылают
                }
            }
            stopwatch.Stop();//останавливаем счетчик
            Console.WriteLine("done in " + stopwatch.ElapsedMilliseconds + " ms" + "\n" + "press any key");//смотрим сколько времени ушло на обработку
            Console.ReadKey();
        }
    }
}

Да, шарп. Можно было бы и на крестиках сделать, но я не хотел тратить время, а в крестиках, чтобы работать со списками файлов и переименовывать их — только в C++17 появились более-менее стандартизированные инструменты — до этого каждый лепил горбатого кто во что горазд — boost это, либо ещё что-то, что подключается дополнительно...

И, да, примеры работы:

раз

два

три

И, да, работает это с любыми файлами, не только с изображениями.

В общем, скачать, если вам оно надо — можете в разделе "программы", а я побежал дальше страдать хернёй работать.