Как скопировать 12 случайных jpgs в папку и быстро переименовать в пакетном режиме или PowerShell (Windows 10 Spotlight Related)
В поисках окончательного решения по рандомизации экранов входа в систему в качестве части ответа на заставку "Блокировать экран блокировки Windows 10", но отключить все текстовые подсказки / всплывающие подсказки, я ищу помощь, я все еще очень новичок в мире пакетных решений, хотя думаю, что это будет полезным решением, когда закончите.
Теперь распространяем этот вопрос на Power Shell, как описано в @KeithMiller.
Пакетный файл Windows или файл powershell, который может:
- Скопируйте 12 случайных изображений jpg и переименуйте в новое место
- Без дубликатов
- На самом деле быть случайным
- Быстро бегать всего за несколько секунд даже при выборе от 700 до 1500 файлов.
- Для поиска.jpg
- Имена файлов.Jpg должны быть неизвестны, поэтому любые файлы могут быть выбраны или добавлены в папку.
- Переименуйте 12 изображений в новое место, наполовину как.jpg, наполовину как.png: img100.jpg, img101.jpg, img102.jpg, img103.jpg, img104.jpg, img105.jpg, а также img100.png, img101.png, img102.png, img103.png, img104.png, img105.png
Note: Windows 10 will still uses the jpgs as png even though they are renamed. With this solution there will be up to 12 random background user lock screen, and also, as far as I have tested this allows for the 5 cache images under lock screen settings.
Powershell Копирует 12 изображений в новое место в случайном порядке (.PS1)
$d = gci "C:\Test\A\*.jpg" | resolve-path | get-random -count 12
Copy-Item $d -destination C:\Test\B
из Stack Exchange, уже работает без дубликатов, теперь нужно только выяснить, чтобы отделить пути для переименования. Найден возможный код, который может помочь:
foreach ($file in $sourcefiles)
{
$newdir = $file.DirectoryName.Replace( $sourcepath, $destination )
If (-not (test-path $newdir))
{
md $newdir
}
Copy-Item -Path $file.FullName -Destination $newdir
}
Пакетный код для подсчета файлов, затем произвести 12 случайных чисел.
@for /f %%G in ('2^>nul dir "C:\test\A\*.jpg" /a-d/b/-o/-p/s^|find /v /c ""') do set N=%%G
@echo Total files: %N%
@echo off & setlocal EnableDelayedExpansion
for /L %%a in (1 1 12) do (
call:rand 1 %N%
echo !RAND_NUM!
)
goto:EOF
REM The script ends at the above goto:EOF. The following are functions.
REM rand()
REM Input: %1 is min, %2 is max.
REM Output: RAND_NUM is set to a random number from min through max.
:rand
SET /A RAND_NUM=%RANDOM% * (%2 - %1 + 1) / 32768 + %1
goto:EOF
- Это не учитывает дубликаты, хотя я подумал, что это будет хороший способ быстро посчитать изображения и придумать номер для выбора.
это основано на посте здесь и здесь
Предыдущее решение, которое я сделал для этого, было благодаря @DavidPostill
- Как я могу скопировать 10 файлов в новый каталог и переименовать их с шаблоном?
- Как я могу переписать первые 3 буквы набора имен файлов случайными символами?
Это решение работает около 150 изображений, а затем, к сожалению, работает долго. Я сделал ошибку, извиняюсь, и не знал, что слайд-шоу Windows 10 случайным образом рандомизирует изображения.
Я действительно старался изо всех сил, чтобы исследовать эту тему, хотя кодирование по-прежнему за мной, поэтому любая помощь будет принята с благодарностью. Я включил чтение / исследование ниже...
Чтение и исследование:
- Computing.net - Как скопировать 6 случайных файлов из 100+ папок?
- Пакетное копирование 50 случайных mp3-файлов из одной папки в другую?
- Скопировать случайный файл в другую папку
- Как скопировать случайное изображение в другую папку, используя командный файл?
- Пакетный скрипт: как установить количество файлов для копирования или перемещения
- Выберите Случайный текстовый файл в пакете
- Произвольно выберите 15 файлов и скопируйте их в выходную папку
- Выберите случайные файлы и переместите их в другую папку пакетным способом
- Скопировать один случайный файл в другую папку рекурсивно
- Выберите один случайный файл и скопируйте в другую папку
- Выберите случайные файлы из папки и переместите их в другую папку
- пакетный код не работает при помещении в цикл
- Сколько времени занимает выполнение командного файла?
- Пакетный файл для копирования файлов из одной папки в другую
- Подсчет количества файлов в папке и сохранение в переменной
- Пакетный файл, который считает и выводит результаты в текстовый файл
- Подсчет файлов в папке и подпапках из командной строки
- Скопировать случайный файл в другую папку
- Пакетный режим - случайно скопировать 1 из 10 файлов из местоположения от А до Б?
- Как зациклить пакетный скрипт только определенное количество раз?
- Пакетный файл Windows для копирования и хранения дубликатов
- Возможно ли "пакетное" копирование файлов в определенном порядке?
- Открытие случайного файла из папки И подпапок с помощью пакетного скрипта
- Пакетный файл для копирования файлов из одной папки в другую папку
- Сделайте несколько копий одного файла, причем каждой копии присваивается уникальное имя файла в пакете
- Как последовательно пакетно копировать файлы из одной папки в другую?
- Самый быстрый способ копирования файлов
- Генератор случайных чисел в партии
- Как использовать случайный в сценарии BATCH?
- Краткие подсказки командной строки (командные файлы)
- Пакетные сценарии Windows WikiBooks
- В чем разница между% и %% в файле cmd?
- Условный оператор IF EXIST для нескольких имен файлов в файле BATCH
- ss64 Copy
- ss64 Xcopy
- ss64 Случайные числа
- ss64 Start
- ss64 для
1 ответ
Это должно быть близко к тому, что вы хотите:
$SelectCount = 12
$SourcePath = "C:\test\A\*.jpg"
$DestPath = 'C:\test\Renamed'
If (!(test-path $DestPath)) {md $DestPath | out-null}
$files = Get-ChildItem -path $SourcePath -file -recurse | Get-Random -count $SelectCount
for ($i = 0; $i -lt $files.count; $i += 2) {
copy-item $files[$i] -destination ('{0}\file{1:000}.jpg' -f $DestPath, ($i/2+100)) -whatif
copy-item $files[$i+1] -destination ('{0}\file{1:000}.png' -f $DestPath, ($i/2+100)) -whatif
}
Удалить -whatif
параметры из операторов copy-item, если вы хотите, чтобы они действительно выполнялись.
Кит