Мне не достаточно написать какой-либо пакетный скрипт, поэтому я как-то разобрал это решение из других источников. Это делает работу; копирует файлы из каталога (и всех его подкаталогов) в другой каталог, по-видимому, случайным образом.
Однако он не может скопировать полное количество файлов, и я не уверен, почему. Если я установлю его на 10, он возвращает, может быть, 7 или 8. Есть идеи? Благодарю.
@echo off
setlocal
:: Create numbered list of files in a temporary file
set "tempFile=%temp%\%~nx0_fileList_%time::=.%.txt"
dir "D:\Users\...\Music" /b /s /a-d %1 | findstr /n "^" >"%tempFile%"
:: Count the files
for /f %%N in ('type "%tempFile%" ^| find /c /v ""') do set cnt=%%N
:: Copy number random files, doesn't get them all though?
for /l %%N in (1 1 100) do call :copyRandomFile
:: Delete the temp file
del "%tempFile%"
exit /b
:copyRandomFile
set /a "randomNum=(%random% %% cnt) + 1"
for /f "tokens=1* delims=:" %%A in (
'findstr "^%randomNum%:" "%tempFile%"'
) do xcopy "%%B" "D:\Users\...\Playlists\Random"
exit /b
Редактировать: Извините, чтобы объяснить дальше: у меня есть папка, полная музыки (хотя она отсортирована в разных подкаталогах по исполнителям и т.д.), И я хочу произвольно выбрать 100 файлов и скопировать их в мою выходную папку, чтобы по существу иметь произвольный список воспроизведения из 100 песен для переноса на mp3-плеер. Приведенный выше код делает это, но по некоторым причинам он не копирует необходимое количество файлов.