Перемещение файлов в папки

У меня есть тысячи файлов изображений в папке, и я хочу, чтобы программа автоматически создавала новые папки и помещала пятьдесят файлов в каждую папку.

Есть идеи?

Ответы (2)

Это похоже на работу PowerShell. Что-то вроде этого должно работать:

# Create 100 folders
1..100 | % {New-Item -Name $_ -ItemType directory}

# select 50 files and move them into folder 1, 2, 3 etc until we hit 100
1..100 | % {
$files = ls | select -First 50
Move-Item $files .\$_
}

Если вы можете скомпилировать код C#, я предлагаю использовать эту программу, которая принимает путь (try .) и число ( 50) в качестве аргумента. Он создаст числовые подпапки и переместит туда файлы. Я выпускаю этот код без гарантии и под лицензией CC-0.

using System;
using System.IO;

namespace MoveNFilesToFolder
{
    static class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var path = args[0];
                int n = int.Parse(args[1]);
                var files = Directory.GetFiles(path, "*.*");
                int fileno = 0;
                foreach (var file in files)
                {
                    var subdir = Directory.CreateDirectory(Path.Combine(path, "" + (fileno++/n)));
                    var targetfile = Path.Combine(subdir.FullName, Path.GetFileName(file));
                    try
                    {
                        File.Move(file, targetfile);
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Could not move " + file + " to " + targetfile);
                    }
                }
            }
            catch (Exception)
            {
                Console.WriteLine("MoveNFilesToFolder <path> <count>");
            }
        }
    }
}