iT邦幫忙

0

如何寫一個BAT檔每天自動複製同一個資料夾內100個檔案一次只複製2個直到完成

請教各位前輩
如果我有一個資料裡面有100個jpg圖檔,我想要寫一個BAT可以每天可以自動從A資料夾複製到B資料夾,每天按檔名排序只複製其中2個檔案直到完全複製完成
請問這xcopy或robocopy BAT可以完成嗎?
還是有其它程式更容易達到這樣的目的?
謝謝大家

看更多先前的討論...收起先前的討論...
蟹老闆 iT邦大師 1 級 ‧ 2020-03-26 10:47:14 檢舉
我想要寫一個BAT
請研究
1.Set /A
2.SetLocal
3.Dir /a-d /b /on
4.For
5.xcopy 或 Copy 或 Robocopy
6.Goto
ks1217 iT邦研究生 4 級 ‧ 2020-03-26 11:55:00 檢舉
這100個圖檔每天都會變更檔名嗎? 然後每天只複製兩個檔案? 檔名 1-100, 然後第一天複製 1-2, 第二天複製 3-4 這樣嗎?
也就是分五十天複製完? 可以再說詳細一點嗎?
yellowart iT邦新手 5 級 ‧ 2020-03-26 12:56:36 檢舉
ks1217 大您好
這100個檔案是固定在一同個資料夾的,不會變更檔名,我是希望例如:
從A資料夾
第一天複製0001.jpg-0002.jpg到B資料夾
第二天複製0003.jpg-0004.jpg到B資料夾
第三天複製0005.jpg-0006.jpg到B資料夾
以此類推
分五十天複製完
謝謝您
slime iT邦大師 1 級 ‧ 2020-03-26 16:33:02 檢舉
寫兩層迴圈,

第一層: 只有一組序號, 用來對應兩個檔案.
第二層: 每小時持續無意義的動作, 直到目前日期與前次完成日期不同, 跳出第二層.
開始複製, 複製完成後紀錄完成日期.
繼續第一層迴圈.
0
allenlwh
iT邦研究生 2 級 ‧ 2020-03-26 11:34:09
robocopy <Source> <Destination> /copyall /xo  

/xo:排除舊版檔案
/copyall:複製所有檔案資訊
yellowart iT邦新手 5 級 ‧ 2020-03-26 13:20:56 檢舉

ks1217 大您好
這100個檔案是固定在一同個資料夾的,不會變更檔名,我是希望例如:
從A資料夾
第一天複製0001.jpg-0002.jpg到B資料夾
第二天複製0003.jpg-0004.jpg到B資料夾
第三天複製0005.jpg-0006.jpg到B資料夾
以此類推
分五十天複製完
謝謝您

allenlwh iT邦研究生 2 級 ‧ 2020-03-26 13:49:15 檢舉

如何決定第一天?
要如何讓BAT知道,目前執行到第幾天?
如果BAT需要重複執行(或執行失敗)時,要執行第幾天的複製工作?

0
ks1217
iT邦研究生 4 級 ‧ 2020-03-26 17:24:08

您好!
建議把產生這100個圖片的方式說明一下, 看還有沒有解法,
或是把這些JPG檔名改成 要複製的那天的日期 例如第一天的兩個檔案 0001.jpg跟00002.jpg改成 202020326-1.jpg 跟 20200326-2.jpg,
如果可以, 就可以用一個Bat檔每天跑一次了.

yellowart iT邦新手 5 級 ‧ 2020-03-27 14:51:08 檢舉

看來只能再找找, 有沒有其它程式可以達到我想要的功能了, 謝謝

蟹老闆 iT邦大師 1 級 ‧ 2020-03-28 00:52:05 檢舉

你不是要自己寫怎麼變再找找,指令都給你了也不去試試

0
max6886
iT邦新手 4 級 ‧ 2020-03-27 11:09:29

SyncBackPro 這套功能強大的檔案備份與同步軟體可以試試看。

SyncBackPro:https://www.2brightsparks.com/syncback/sbpro.html

SyncBackFree:https://www.2brightsparks.com/freeware/index.html

yellowart iT邦新手 5 級 ‧ 2020-03-27 14:51:26 檢舉

謝謝Max大, 我會試試看

0
eric_suwh
iT邦新手 5 級 ‧ 2020-04-02 21:57:34
  • 設定排程來控制一天執行一次
  • 可以修改 dir 參數,來調整備份檔案順序
  • 目前使用 exist 來判斷是否已經備份過了,也可以用 xcopy /m 的保存屬性加上 dir /A:A 來列出還沒備份過的檔案
@echo off
rem  來源資料夾
set SOURCE_DIR=dirA

rem  目的資料夾
set TARGET_DIR=dirB

rem 一次備份幾個檔案
set BACKUP_FILE_COUNT=2

for /l %%i in (1, 1, %BACKUP_FILE_COUNT%) do (
  call :backupOne
)
exit /b

rem 一次備份一個檔案
:backupOne
for /F %%F in ('dir /b %SOURCE_DIR%\*.jpg') do (
  if not exist %TARGET_DIR%\%%F (
    echo Backup %%F to %TARGET_DIR%
    copy %SOURCE_DIR%\%%F %TARGET_DIR% > nul
    exit /b
  )
)
exit /b

我要發表回答

立即登入回答