iT邦幫忙

0

win10批次複製檔案並依照原始子目錄名稱改檔名

請問各位前輩大大:
目前有一批原始檔案儲存在依照其日期命名的資料夾底下,並叫做相同的名稱(file.raw),例如: 有兩個原始檔案分別是C:\202001\20200101\file.raw 及 C:\202001\20200102\file.raw,但每個日期命名的資料夾中還有其他的檔案(例如20200101\otherfile.raw)。
希望能只複製原目錄(C:\202001)底下所有日期命名的子目錄(如20200101\及20200102)的file.raw到目的地 D:\AllFile\,並依照子目錄的日期名稱重新命名file.raw檔案,例如複製到目的地以檔名file20200101.raw及file20200102.raw儲存,並不複製原始的日期子目錄至目的地。
我目前查詢相關資料只有找到可以複製特定資料夾的特定檔名資料至目的地資料夾,但沒有找到依照子目錄改名的相關方式,不知道該如何操作比較合適。
請問robocopy可以複製原始資料夾的內子目錄的特定檔案名稱至目的地並依照子目錄改檔案名稱嗎?或是有其他方式嗎? 請各位大大給我建議了,感謝!!

eric_suwh iT邦新手 5 級 ‧ 2020-04-22 15:49:40 檢舉
一次性的工作,建議用工具。
常態性的工作,建議用批次檔。
推樓上。為了這一件事花兩天寫程式碼還滿不划算的...

2 個回答

0
cyc0713
iT邦新手 5 級 ‧ 2020-04-22 14:41:10

用total commander
到c:\202001目錄,任意選一個子目錄
https://ithelp.ithome.com.tw/upload/images/20200422/20125246DaRkC0Kdes.png
按ctrl+b將目錄展開
再按ctrl+a全選
再選memu的files>>Multi-Rename tool
https://ithelp.ithome.com.tw/upload/images/20200422/20125246i1Ux6qJQ1F.png
Rename mask輸入[N][P]
再按Start!
再按close
https://ithelp.ithome.com.tw/upload/images/20200422/20125246tfiGO6Tc9E.png
再ctrl+a全選
再ctrl+c, ctrl+v到你想要的目錄
https://ithelp.ithome.com.tw/upload/images/20200422/20125246XQzTVnU3Er.png

1
鬼王很慘
iT邦新手 5 級 ‧ 2020-04-22 16:39:47

以下的bat檔可以完成您上述簡單的例子,但不知道有沒有完全符合您的需求。

set sourceLocation=C:\202001
set targetLocation=D:\AllFile

cd %sourceLocation%
setlocal %enabledelayedexpansion%
for /f "tokens=1 delims=^" %%i in ('dir /b') do (
copy %%i\file.raw %targetLocation%
ren %targetLocation%\file.raw file%%i.raw
)

pause

思路:

  1. 進入原目錄
  2. 循環所有子目錄
  3. 複製每個子目錄中的file.raw檔至目標目錄
  4. 將目標目錄的file.raw改為子目錄的日期檔名

我要發表回答

立即登入回答