iT邦幫忙

0

(已解決)用Batch檔批次更新舊檔

  • 分享至 

  • xImage

各位大神好
我想利用bat檔自動更新下圖兩個資料夾裡的檔案
圖一:有三個dll檔,在D:\CC\application路徑下
https://ithelp.ithome.com.tw/upload/images/20230119/201480722JDwpz5Bh5.jpg
圖二:有一個excel檔,在D:\CC\dat\A1路徑下
https://ithelp.ithome.com.tw/upload/images/20230119/20148072StSGyvgVtm.jpg

圖三:更新來源在D:\update,所有檔案混再一起(含bat檔)
https://ithelp.ithome.com.tw/upload/images/20230119/20148072Q6OcBPU2iK.jpg

想將上方舊資料夾的檔案直接覆蓋,完成後會出現已完成更新字樣

參考https://ithelp.ithome.com.tw/questions/10200068 文章的回覆
修改自己的程式如下(先修改dll檔)

@Echo Off
Set ReleasePath=D:\update
Set TargetPath=D:\CC\application
For /f %%i In ('Dir "%ReleasePath%\*.dll" /o-n-es /a-d /b') Do (
    If Not Exist "%TargetPath%\%%i" Echo Xcopy /Y "%%~fi" "%TargetPath%\%%i"
    Goto EOF
)
pause

但看起來沒有反應
請教大神該如何撰寫

※初學中,請見諒

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2023-01-24 04:19:32
最佳解答
@Echo Off

rem 設定更新來源路徑
Set ReleasePath=D:\update

rem 設定目標路徑
Set TargetPath=D:\CC\application

rem 設定檔案類型
Set FileType=*.dll

rem 從更新來源路徑中搜尋檔案
For /f %%i In ('Dir "%ReleasePath%\%FileType%" /o-n-es /a-d /b') Do (

     rem 複製檔案到目標路徑
     Xcopy /Y "%%~fi" "%TargetPath%\%%i"
     
     rem 顯示已複製的檔名
     echo 已複製檔案:%%i
)

rem 顯示已完成更新
echo 已完成更新

rem 暫停
pause
reed iT邦新手 5 級 ‧ 2023-02-03 13:40:52 檢舉

感謝解答
上面的備註對新手來說非常有幫助

0
bahmo
iT邦新手 5 級 ‧ 2023-01-20 08:54:16


If Not Exist "%TargetPath%%%i" Echo
Goto EOF

@Echo Off
Set ReleasePath=D:\update
Set TargetPath=D:\CC\application
For /f %%i In ('Dir "%ReleasePath%\*.txt" /o-n-es /a-d /b') Do (
    Xcopy /Y  "%%~fi" "%TargetPath%\%%i"
 )
pause

⑵改用robocopy

@Echo Off
Set ReleasePath=D:\update
Set TargetPath=D:\CC\application
robocopy /IS /IM /NJH /NJS %ReleasePath% %TargetPath% *.txt
pause
reed iT邦新手 5 級 ‧ 2023-02-03 13:38:11 檢舉

感謝大神回復
真的是槓掉這幾行就能用了
下面的方法也非常簡潔

我要發表回答

立即登入回答