我做了一個腳本,從源代碼副本隨機文件夾到目的地,直到該文件夾已滿(知道目標文件夾小則源。複製隨機文件夾很快
所有各個部件的工作如目的,但我現在運行的腳本沒有包括副本(只是一個回聲),所以基本上,如果沒有任何文件夾大於目標目錄中的剩餘空間,它應該永遠運行。但它平均停止5次迭代,而沒有足夠大的文件夾來填充目錄。這是我正在使用的代碼
編輯:得到它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
修正了,但現在只有一些文件輸出0的大小,並有一個文件。 (原始線程中更新的代碼) – Kiwi
放置echo命令以顯示選擇哪個源文件夾並檢查該文件夾中是否包含文件。文件。如果它包含文件夾但不包含文件,則目錄中的空間將爲0,因爲您的dir命令不是遞歸的 –