ต้องการไฟล์ค้างคาวเพื่อย้ายรูปภาพ 30 ภาพจากโฟลเดอร์หนึ่งไปยังอีกรูปแบบหนึ่ง


-4

ฉันมีโฟลเดอร์ "C: \ TEST \ Clean" ที่มีรูปภาพจำนวนมาก (สมมติว่า 436) และฉันต้องย้าย 30 รายการไปยังโฟลเดอร์ "C: \ Dropbox \ Apps \ Auto \ \ Auto_ โพสต์ \ 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
เราไม่ได้เป็นบริการการเข้ารหัส จนถึงตอนนี้คุณมีอะไร (ฉันยังไม่ลงคะแนนเลย แต่สิ่งนี้เกิดขึ้นทุกครั้งสำหรับคำถามดังกล่าว)
Varon

สวัสดี Varon ฉันอาจจะคิดถึงบางสิ่งบางอย่างและคุณต้องอุทิศคำถามให้ฉัน ฉันไม่ได้ทำอะไรเพราะฉันไม่รู้จะทำยังไง ฉัน google มัน แต่ฉันไม่มีโชค (ฉันไม่เข้าใจผลลัพธ์บางอย่าง) หากคุณสามารถช่วยฉัน (คุณหรือคนอื่นที่นี่) โปรดทำหรือบอกฉันว่าฉันต้องลบคำถามของฉันจากแพลตฟอร์ม ขอบคุณอีกครั้ง.
Leonidas Maliagros

"StackExchange" และไซต์ย่อยประกอบด้วยแพลตฟอร์มช่วยเหลือ สิ่งที่คุณต้องการคือไฟล์ค้างคาวเต็มรูปแบบที่ทำสิ่งเหล่านี้ให้คุณ คุณไม่ได้มีส่วนร่วมในความคิด คุณเข้าใจสิ่งที่ฉันหมายถึงอะไร ถ้าฉันไปที่ บริษัท ซอฟต์แวร์และจ่ายเงิน 100 $ ฉันสามารถขอไฟล์ค้างคาวได้ แต่ถ้าฉันต้องการความช่วยเหลือ นี้ และ นี้ ... ที่นี่ ฉันคิดว่ามีบางอย่างผิดปกติ ... ฉันไม่เข้าใจ นี้ บรรทัด ... --- นี่คือความแตกต่าง
Varon

1
ขอบคุณ Varon ฉันเข้าใจแล้ว ฉันมีข้างต้น แต่ย้ายเพียง 1 ภาพ คุณช่วยฉันทีจะย้ายพวกมัน 30 คนในครั้งเดียวได้ไหม? @echo off set folder = C: \ TEST \ Clean ชุด destfolder = C: \ Dropbox \ Apps \ AutoPost \ For_Post_1 สำหรับ / f "delims =" %% C ใน ('dir / b / ad "% โฟลเดอร์% *. jpg "^ | find / c / v" "') ตั้งค่า / A num =% random% %% %% C สำหรับ / f" delims = "%% F ใน (' dir / b / ad"% โฟลเดอร์% * jpg "^ | เพิ่มเติม +% num% ') ตั้งชื่อ = %% F & amp; ย้อนกลับไปถัดไป: เสียงสะท้อนต่อไปคือตอนนี้% name% ย้าย "% โฟลเดอร์% \% ชื่อ%" "% destfolder% \% ชื่อ%"
Leonidas Maliagros

ดังนั้นหากรหัสที่กล่าวถึงใช้งานได้กับ 1 ไฟล์ทำไมไม่เรียกใช้รหัสเดียวกันในการวนซ้ำ 30 รอบ
SeanClt

คำตอบ:


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

คำอธิบายที่ดีที่สุดสำหรับลูปที่ฉันพบ: http://ss64.com/nt/for.html
EXIT /B พร้อมใช้งานใน Windows 2000 และใหม่กว่าและคล้ายกับทั่วไป return


ปกติคุณจะใช้ไฟล์แบตช์เพื่อทำสิ่งนั้นหรือคุณจะใช้ภาษาอื่นถ้าเป็นเช่นนั้นจะเป็นอย่างไร
barlop

@barlop ฉันคิดว่าฉันอยากจะใช้ภาษา Windows Explorer ในการลากและวาง :)
Don't Root here plz...
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.