iT邦幫忙

0

如何xcopy 將一檔案複製(覆蓋) 到N個目錄夾?

您好

請教各位,如何使用xcopy將my.pdf 覆蓋到不同目錄夾?

來源:
D:\my.pdf

目的: D:\files\數字\pdf\my.pdf
數字會增加及不連續

D:\files\1\pdf\my.pdf
D:\files\2\pdf\my.pdf
D:\files\10\pdf\my.pdf
D:\files\11\pdf\my.pdf
D:\files\13\pdf\my.pdf
D:\files\15\pdf\my.pdf
....
D:\files(數字增加)\pdf\my.pdf

請大家提供教學網頁或方向?
先謝謝各位!

看更多先前的討論...收起先前的討論...
webtest iT邦新手 5 級 ‧ 2019-05-10 18:30:36 檢舉
這是每月一日及每天備份修改過的檔案 ,
缺 "當檔案被刪除前複製到另一目錄夾" (研究中 )
( 這是網站目錄夾)

set monthday01_folder=%date:~0,4%%date:~5,2%01
set Date_folder=%date:~0,4%%date:~5,2%%date:~8,2%

for /F "tokens=*" %%t in ("%date%") do (
for /F "delims=-/ tokens=3" %%m in ("%%t") do (
for /F %%n in ("%%m") do (
IF "%%n"=="01" (
echo --- F---
robocopy "D:\wwwroot" "H:\bak_web\%monthday01_folder%\wwwroot" /copyall /E
) ELSE (
echo --- D ---
robocopy D:\wwwroot S:\webbak_day\100\%Date_folder% /S /maxage:1 /mt:8 /R:1 /W:5 /LOG+:S:\webbak_day\100\backupLog%Date_folder%.txt
)
)
)
)
slime iT邦大師 1 級 ‧ 2019-05-10 20:42:12 檢舉
1. 數字增加有規則嗎?
2. 用過的目錄, 下次還需要 copy 檔案進去嗎?
webtest iT邦新手 5 級 ‧ 2019-05-10 21:38:51 檢舉
1. 數字都是累加 1 ,
若10不要 , 是整個刪除 D:\files\10\pdf\my.pdf
2. 當 D:\my.pdf , 這支PDF有異動 ,
就必須覆蓋所有 D:\files\數字\pdf\內的my.pdf ,
不須篩選 數字 , 一律覆蓋,

目前都是手動 一個一個覆蓋 , 現在目錄夾太多 , 想如何自動 .

謝謝 slime .
slime iT邦大師 1 級 ‧ 2019-05-11 00:06:15 檢舉
批次檔有一種 for /R 可以找多層目錄, 用這方法找所有的 my.pdf , 再執行由特定目錄 copy 檔案過來, 例如: (未測試, 麻煩依您的環境試試看)
for /R D:\files %f in (my.pdf) do echo copy /y D:\my.pdf %f
何必問 iT邦好手 1 級 ‧ 2019-05-11 02:13:20 檢舉
dir /ad /s /b > FOLDERLIST.txt & for /F "tokens=*" %a in (FOLDERLIST.txt) do @copy my.pdf %a
webtest iT邦新手 5 級 ‧ 2019-05-11 11:59:35 檢舉
謝謝 slime & 何必問
測試成功!

CMD 執行1 :
dir D:\files\ /ad /s /b | FINDSTR "pdf" > D:\files\FOLDERLIST.txt

補充 : | FINDSTR "pdf" , D:\files\2\ 內有其他目錄夾

CMD 執行2 :
for /F "tokens=*" %a in (D:\files\FOLDERLIST.txt) do xcopy D:\my.pdf %a\my.pdf /D /R /A /E /Y /C /I

-------------------------------------------

1. 當我放在.bat , CMD 執行2 沒有執行 , 請問這原因?
2. 如何將 CMD 執行1 & CMD 執行2 , 寫成一行 ?
我試過把 CMD 執行1 放入in 內 , 發生錯誤在 不能有 |

謝謝!
slime iT邦大師 1 級 ‧ 2019-05-11 22:12:23 檢舉
1. 批次檔內 %a 要改用 %%a
2. pipeline ( | ) 是把前一個動作的結果傳給下一個動作. 您需要的應該是"執行第一個動作後繼續執行下一個動作", 所以要改用 & (無條件執行第二個動作) 或 && (第一個動作成功才執行第二個動作)
2+ 要把某程式結果當成引用資料, 可以用 (``) 試試看(在鍵盤 ESC 底下的引號.)
webtest iT邦新手 5 級 ‧ 2019-05-12 07:34:10 檢舉
謝謝 slime
1&2成功!

尚未有邦友回答

立即登入回答