-4

У меня есть папка «C:\TEST\Clean» со многими фотографиями (скажем, 436), и мне нужно переместить 30 из них в папку «C:\Dropbox\Apps\AutoPost\For_Post_1».

У меня это пока что, но это для 1 файла, и мне нужно для 30.

@echo off
set folder=C:\TEST\Clean
set destfolder=C:\Dropbox\Apps\AutoPost\For_Post_1

for /f "delims=" %%C in ('dir /b /a-d "%folder%\*.jpg" ^| find /c /v ""') do set /A num=%random% %% %%C
for /f "delims=" %%F in ('dir /b /a-d "%folder%\*.jpg" ^| more +%num%') do set name=%%F & goto next

:next

echo Wallpaper is now %name%
move "%folder%\%name%" "%destfolder%\%name%"

1 ответ1

1

Вы можете использовать следующий скрипт, чтобы 30 раз выполнить фрагмент, который вы уже написали:

@ECHO off
SET src=C:\TEST\Clean
SET dst=C:\Dropbox\Apps\AutoPost\For_Post_1
SET ext=*.jpg

FOR /L %%G IN (1,1,30) DO (call :subroutine "%%G")
GOTO :eof

:subroutine
    FOR /f %%A IN ('dir /b /s %src%\%ext% ^| find /v /c ""') DO SET cnt=%%A
    FOR /f "delims=" %%C IN ('dir /b /s "%src%\%ext%" ^| find /c /v ""') DO (
      SET /A num=%ranDOm% %% %%C
      FOR /f "delims=" %%F IN ('dir /b /s "%src%\%ext%" ^| more +%num%') DO SET name=%%F & GOTO next
    )   
    :next
    ECHO Round %1 : File %name%
    MOVE %name% %dst%
    EXIT /B

:eof

Лучшее объяснение для циклов for, которые я нашел: http://ss64.com/nt/for.html
EXIT /B доступен в Windows 2000 и более поздних версиях и похож на обычный return

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .