Этот код работает и выбирает случайный файл, но когда я помещаю его во внешний цикл, я получаю пустой "" вместо этого.
rem scrambler
setlocal EnableDelayedExpansion
@echo off
cd j:\target
rem for /R %%t in (*.mp3) do (
REM echo ********************
REM echo T folder is %%~dpt
cd j:\source
set n=0
for /R %%f in (*.mp3) do (
set /A n+=1
set "file[!n!]=%%f"
)
set /A "rand=(n*%random%)/32768+1"
rem copy "!file[%rand%]!" j:\target
echo "!file[%rand%]!"
cd j:\target
REM copy "!file[%rand%]!" %%~dpt
REM move "!file[%rand%]!" j:\old
rem )
PS. Я пытаюсь сделать следующее: идентичные исходные и целевые папки с mp3-файлами в них. Затем я перебираю целевые файлы и для каждого целевого файла перезаписываю их случайным mp3-файлом из исходной папки. Я (пере) перемещаю файл из источника и случайным образом выбираю другой исходный файл для следующего целевого файла, поэтому я исчерпываю все файлы без дубликатов. В конце концов, цель имеет те же файлы и структуру, что и исходный код, но теперь они зашифрованы, то есть, если я смогу достичь этого. Я знаю, что массив занимает некоторое время, поэтому я тоже хочу его оптимизировать.