Я пытаюсь сделать командный файл, который перемещает файлы случайным образом - PullRequest
0 голосов
/ 04 сентября 2018

У меня уже есть код, но он продолжает выбирать первый файл в списке, и это раздражает. Я понятия не имею, что делать.

@echo off
setlocal enabledelayedexpansion
CD c:\"destination"\somefolder
set n=0
for %%f in (*.*) do (
set /a n+=1
set "file[!n!]=%%f"
)
set /a rand=(n*%random% %%4) /4
move "!file[%rand%]!" C:\destination\somefolder
pause

1 Ответ

0 голосов
/ 04 сентября 2018

rand с размером 30 бит (значение от 0 до 2 ^ 30-1 по модулю n)

@echo off
setlocal EnableDelayedExpansion
pushd c:\"source"\somefolder
set "n=0"
for /f "tokens=*" %%f in ('dir /b /a-d *.*') do (
  rem number files from 0 and use full filename with spaceses
  set "file[!n!]=%%~ff"
  set /a "n+=1"
)
popd
if  %n% leq  32768 ( set /a "rand=%random%%%n%"
) else set /a "rand=((%random%<<15)+%random%)%%n%"
move "!file[%rand%]!" C:\destination\somefolder
pause
endlocal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...