Делаем скрипт, который копирует случайные папки от источника до пункта назначения, пока эта папка не является полной (зная, что папка назначения меньше, чем источник.Копирования случайных папок остановочных скоро
Всех отдельных частей работают как и предполагалось, но теперь я запускаю скрипт без включенной копии (просто эхо), поэтому в основном, если нет более крупных папок, чем оставшееся место в целевом каталоге, оно должно работать вечно.
Но он останавливается в среднем на 5 итераций, в то время как нет никакой папки, достаточно большой, чтобы заполнить каталог. Это код, который я использую
EDIT: получил это olmost работает, но теперь иногда через needed_space выходы 0
@ECHO off
setlocal EnableDelayedExpansion
SET n=0
SET SOURCE_PATH=M:\Movies
SET DEST_PATH=E:\Movies
:: get all folders in dir
FOR /f "usebackq tokens=*" %%a in (`DIR /b/a:d %SOURCE_PATH%`) do (
SET /A n+=1
SET folder[!n!]=%%a
)
:loop
:: selecting ranodm number
SET /A rand=(n*%random%)/32768+1
:: check for space
for /F "tokens=3" %%S in ('dir /-c "%SOURCE_PATH%\!folder[%rand%]!\*" ^| findstr /c:"File(s)"') DO set NEEDED_SPACE=%%S
FOR /f "tokens=1*delims=:" %%i IN ('fsutil volume diskfree %DEST_PATH%') DO SET FREE_SPACE=%%j
ECHO %FREE_SPACE% - %NEEDED_SPACE%
IF %NEEDED_SPACE% GTR %FREE_SPACE% GOTO done
:: check if file does not exits
IF EXIST %DEST_PATH%\!folder[%rand%]! GOTO loop
:: copy file
ECHO moving %SOURCE_PATH%\!folder[%rand%]! to %DEST_PATH%\!folder[%rand%]!
:: again
GOTO loop
:done
ECHO Done copying random folders, have fun!
Собираюсь посмотреть в эти вещи – Kiwi
Fixed что, но теперь только некоторые файлы вывод 0, как там размер, и есть файл в них. (обновленный код в исходном потоке) – Kiwi
Установите команду echo, чтобы показать, какая исходная папка выбрана, и проверьте, что папка содержит в ней файлы. ФАЙЛЫ. Если он содержит папки, но не содержит файлов, пространство в каталоге будет 0, так как ваша команда dir не рекурсивна –