CMD/BAT - [решено] Оставить рандомный файл в папках

Аватара пользователя
MI-5

CMD/BAT - [решено] Оставить рандомный файл в папках

Сообщение MI-5 »

Добрый день. Помогите пожалуйста. Требуется рукурсивно оставить в подпапках один рандомный файл (все файды - jpg), а остальные удалить. Желательно, но не обязательно, с указанием корневой папки. То есть, указываем имя папки и изо всех подпапок удаляются все файлы кроме одного рандомного. Заранее спасибо.
Аватара пользователя
MI-5

Re: CMD/BAT - [решено] Оставить рандомный файл в папках

Сообщение MI-5 »

Спасибо за PowerShell. Приду домой - попробую. Исходные файлы не нужны. Примеры нужны только чтобы залить на тот же fastpic.ru. В крайнем случае, забекаплю исходные каталоги. Просто честно не понимаю - какое значение имеет написание тут цели всех этих операций!
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Оставить рандомный файл в папках

Сообщение Iska »

Iska, Есть десять тысяч папок, в каждой по сто-двести файлов. Надо оставить по одному примеру изображения из каждой папки, а остальные удалить. А просматривать миллион изображений вручную нет никакого ни желания, ни времени.
Аватара пользователя
MI-5

Re: CMD/BAT - [решено] Оставить рандомный файл в папках

Сообщение MI-5 »

MI-5, это ни о чём. Зачем в таком случае нужно вообще что-то оставлять?! Shift-Del, и дело с концом.



Пока что неубедительно.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Оставить рандомный файл в папках

Сообщение Iska »

Цитата MI-5:



Iska, Ну проблема у меня такая.
CMD/BAT - [решено] Оставить рандомный файл в папках





Цитата MI-5:



Я не пытаюсь никого ни в чём убедить - зачем мне это надо? Мне надо решить стоящую передо мной проблему - я спросил здесь.
CMD/BAT - [решено] Оставить рандомный файл в папках




MI-5, проблема у Вас с тем, что Вы уже выбрали решение для неизвестной задачи, каковое и озвучили. Саму задачу описывать не хотите, зачем надо — не пишете, отделываясь общими фразами.




Цитата MI-5:



Чтобы нажать Shift+Del, надо зайти в каждую из десяти тысяч папок,
CMD/BAT - [решено] Оставить рандомный файл в папках




Я не предлагал Вам ходить по десяти тысячам папок. Я предлагал нажать Shift-Del на головной папке, и закрыть проблему парой нажатий клавиш в целом: какая разница — оставлять по одному случайному файлу, или не оставлять вовсе.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Оставить рандомный файл в папках

Сообщение Iska »

Я делаю раздачу на трекер. По одному файлу в каждой папке надо для примеров.


Цитата Iska:



Я предлагал нажать Shift-Del на головной папке, и закрыть проблему парой нажатий клавиш в целом: какая разница — оставлять по одному случайному файлу, или не оставлять вовсе.
CMD/BAT - [решено] Оставить рандомный файл в папках




Тут даже сказать нечего.
Аватара пользователя
MI-5

Re: CMD/BAT - [решено] Оставить рандомный файл в папках

Сообщение MI-5 »

Цитата MI-5:



Я делаю раздачу на трекер. По одному файлу в каждой папке надо для примеров.
CMD/BAT - [решено] Оставить рандомный файл в папках




Предлагаю сделать иное, нежели удаление. А именно — воссоздать всю структуру каталогов в отдельном каталоге того же раздела, затем создать по одной жёсткой ссылке в каждом каталоге-дубликате на файл из оригинального каталога. Таким образом, дополнительного места эти файлы занимать не будут.



На PowerShell:



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

$sSourceFolder = 'C:\Мои проекты\0142'
$sDestFolder   = 'C:\Мои проекты\0143'
if(Test-Path -Path $sSourceFolder -PathType Container) {
    @(Get-Item -Path $sSourceFolder) + (Get-ChildItem -Path $sSourceFolder -Directory -Recurse) | `
        ForEach-Object -Process {
            $cFiles = $_.GetFiles()
            if($cFiles.Count -gt 0) {
                $sNewFolder = $_.FullName.Replace($sSourceFolder, $sDestFolder)
                $oNewFolder = New-Item -ItemType Directory -Path (Split-Path -Path $sNewFolder -Parent) -Name (Split-Path -Path $sNewFolder -Leaf)
                $oFile = $cFiles[$(Get-Random -Maximum ($cFiles.Count - 1))]
                New-Item -ItemType HardLink -Path $sNewFolder -Name $oFile.Name -Value $oFile.FullName | Out-Null
            }
        }
}





Каталог назначения не должен существовать[/i].



Затем можете начинать раздавать новосозданную структуру каталогов с одиночными случайными файлами.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Оставить рандомный файл в папках

Сообщение Iska »

Цитата Iska:



Таким образом, дополнительного места эти файлы занимать не будут.
CMD/BAT - [решено] Оставить рандомный файл в папках




Из объяснений MI-5 я понял так, у него лежит набор скриншотов из фильмов, которые он раздаёт — и ему весь этот набор и нафиг не нужен, а лишь по одному файлу как пример. И тогда после создания каталога с жёсткими ссылками можно удалить весь исходный каталог, в результате чего жесткие ссылки превратятся в исходные независимые одиночные файлы. Изображение
Аватара пользователя
mwz

Re: CMD/BAT - [решено] Оставить рандомный файл в папках

Сообщение mwz »

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




Цитата mwz:



И тогда после создания каталога с жёсткими ссылками можно удалить весь исходный каталог, в результате чего жесткие ссылки превратятся в исходные независимые одиночные файлы.
CMD/BAT - [решено] Оставить рандомный файл в папках




Ну, вот, спалили Изображение.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»