Potrzebujesz pliku nietoperza, aby losowo przenieść 30 zdjęć z folderu do innego


-4

Mam folder „C: \ TEST \ Clean” z wieloma zdjęciami (powiedzmy 436) i muszę przenieść 30 z nich do folderu „C: \ Dropbox \ Apps \ AutoPost \ For_Post_1”.

Mam to do tej pory, ale jest na 1 plik i potrzebuję go na 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
Nie jesteśmy usługą kodowania. Co masz do tej pory (Nie głosowałem jeszcze, ale zdarza się to za każdym razem dla takich pytań)
Varon,

Cześć Varon, może coś nie rozumiem i musisz mi zadać pytanie. Nic nie zrobiłem, bo nie wiem jak to zrobić. Google go, ale nie miałem szczęścia (nie rozumiem niektórych wyników). Jeśli możesz mi pomóc (tutaj lub komuś innemu), zrób to lub powiedz, czy muszę w jakiś sposób usunąć moje pytanie z platformy. Dzięki jeszcze raz.
Leonidas Maliagros,

„StackExchange” i podstrony stanowią platformę pomocy. To, co chcesz mieć, to kompletny plik nietoperza, który robi te rzeczy za Ciebie. Nie zgłosiłeś pomysłów. Rozumiesz co mam na myśli? Jeśli pójdę do firmy produkującej oprogramowanie i zapłacę 100 $, mogę poprosić o taki plik nietoperza, ale jeśli chcę uzyskać pomoc, powiedziałbym: próbowałem tego i tamtego ... tutaj myślę, że coś poszło nie tak ... ja nie rozumiem tej linii ... --- To jest różnica
Varon

1
Dzięki Varon, rozumiem. Do tej pory mam powyższe, ale przenieś tylko 1 zdjęcie. Czy możesz mi pomóc przenieść 30 z nich na raz? @echo off set folder = C: \ TEST \ Clean set destfolder = C: \ Dropbox \ Apps \ AutoPost \ For_Post_1 for / f "delims =" %% C in ('dir / b / ad "% folder% *. jpg „^ | find / c / v” ””) ustaw / A num =% random% %%% %% C for / f ”delims =" %% F in ('dir / b / ad "% folder% *. jpg "^ | more +% num% ') ustaw nazwę = %% F i goto dalej: następne echo Tapeta jest teraz% name% move"% folder% \% name% ""% destfolder% \% name% "
Leonidas Maliagros,

więc jeśli wspomniany kod działa dla 1 pliku, dlaczego po prostu nie uruchomić tego samego kodu w pętli przez 30 iteracji
SeanClt

Odpowiedzi:


1

Możesz użyć następującego skryptu, aby wykonać 30-krotny fragment, który już napisałeś:

@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

Najlepsze wyjaśnienie dla pętli, które znalazłem: http://ss64.com/nt/for.html
EXIT /B jest dostępne w systemie Windows 2000 i nowszych i jest podobne do zwykłegoreturn


czy normalnie użyłbyś do tego pliku wsadowego, czy użyłbyś innego języka, jeśli tak, to co?
barlop

@barlop Myślę, że wolałbym używać języka Windows Explorer do przeciągania i upuszczania :)
Nie rootuj tutaj plz ...
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.