Добавить в корзинуПозвонить
Найти в Дзене
Ядерный изотоп

Как перемешать файлы в случайном порядке и пронумеровать их?

В моём случае такая задача появилась для записи диска с mp3 треками для плеера, который не поддерживает рандомное воспроизведение.
Всё это можно сделать средствами windows, не прибегая к установке сторонних программ. Приступим. # Получаем список только файлов (без папок) и перемешиваем их $files = Get-ChildItem -File | Get-Random -Count (Get-ChildItem -File).Count # Переменная счетчика $i = 1 foreach ($file in $files) { # Формируем новое имя. {0:D3} означает номер с ведущими нулями (например, 001, 002). Если хотите без нулей, замените D3 на d. $newName = "{0:D3}_{1}" -f $i++, $file.Name # Проверяем, не существует ли уже файл с таким именем (защита от перезаписи) if (-not (Test-Path $newName)) { Rename-Item -Path $file.FullName -NewName $newName Write-Host "Переименован: $($file.Name) -> $newName" } else { Write-Warning "Файл с именем '$newName' уже существует! Пропуск." } } Write-Host "Готово!" -ForegroundColor Green

В моём случае такая задача появилась для записи диска с mp3 треками для плеера, который не поддерживает рандомное воспроизведение.
Всё это можно сделать средствами windows, не прибегая к установке сторонних программ. Приступим.

  • Открываем папку, в которой находятся файлы для преобразования. Не забывайте про резервную копию.
  • В адресной строке вместо пути к папке пишем powershell, либо жмякаем правую кнопку мыши в этой папке на пустом месте и выбираем пункт "открыть в терминале".
  • В открывшемся окне вставляем код:
# Получаем список только файлов (без папок) и перемешиваем их
$files = Get-ChildItem -File | Get-Random -Count (Get-ChildItem -File).Count
# Переменная счетчика
$i = 1
foreach ($file in $files) {
# Формируем новое имя. {0:D3} означает номер с ведущими нулями (например, 001, 002). Если хотите без нулей, замените D3 на d.
$newName = "{0:D3}_{1}" -f $i++, $file.Name
# Проверяем, не существует ли уже файл с таким именем (защита от перезаписи)
if (-not (Test-Path $newName)) {
Rename-Item -Path $file.FullName -NewName $newName
Write-Host "Переименован: $($file.Name) -> $newName"
} else {
Write-Warning "Файл с именем '$newName' уже существует! Пропуск."
}
}
Write-Host "Готово!" -ForegroundColor Green

  • Готово