iT邦幫忙

1

依檔案日期建資料夾存放

請問一下
我想在一個資料夾內所有的檔案依檔案的日期建立子資料夾(檔案的日期)存放
該如何用bat完成呢?

這有你要的答案
https://ithelp.ithome.com.tw/questions/10186090
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
特倫斯
iT邦新手 5 級 ‧ 2020-02-25 09:09:54

感謝大大提供。可能我沒說明清楚
我的檔案是亂數命名(非時間),想要依檔案建立的日期,產生這日期的資料夾,再把這日期的檔案全部存放進去

看更多先前的回應...收起先前的回應...
sam0407 iT邦大師 1 級 ‧ 2020-02-25 17:13:58 檢舉

釣竿已經給你了,要吃魚還是得您自已去釣~~
我也給點提示..
開個命令提示字元,cd到你放檔案的資料夾下,輸入 dir /b 看看輸出是什麼?
再輸入 dir,看看輸出又是什麼?最前面是不是出現日期了?但請注意看那是修改日期
輸入 dir /? 看看 /T 這個參數

再來就是照happy2002172大提供的連結,修改這個批次檔就能解決您的問題了~

特倫斯 iT邦新手 5 級 ‧ 2020-02-27 20:40:36 檢舉

感謝大大幫忙,我用happy2002172大的方式先模擬跑出來是這樣https://ithelp.ithome.com.tw/upload/images/20200227/20125113Jhp4Bxb05s.png
md出來的資料夾怪怪的
後來我找一些分享,兜成這樣,還請大大賜教

D:\test>FOR /F %i in ('dir /b *.jpg') do {(FOR /F "tokens=1-3 delims=/ " %a IN ('dir /t *.jpg') DO (SET FileDate=%a%b%c   & SET File=%i   & md !name:~0,8!   & move "%i"))}

D:\test>{(FOR /F "tokens=1-3 delims=/ " %a IN ('dir /t *.jpg') DO (SET FileDate=%a%b%c   & SET File=CCTV1234_20170518123456_00.jpg   & md !name:~0,8!   & move "CCTV1234_20170518123456_00.jpg"))}
'{' 不是內部或外部命令、可執行的程式或批次檔。
目錄名稱無效。
處理時發生錯誤: !name:~0。
子目錄或檔案 8! 已經存在。
處理時發生錯誤: 8!。
系統找不到指定的檔案。

D:\test>{(FOR /F "tokens=1-3 delims=/ " %a IN ('dir /t *.jpg') DO (SET FileDate=%a%b%c   & SET File=CCTV1234_20170519123456_00.jpg   & md !name:~0,8!   & move "CCTV1234_20170519123456_00.jpg"))}
'{' 不是內部或外部命令、可執行的程式或批次檔。
目錄名稱無效。
處理時發生錯誤: !name:~0。
子目錄或檔案 8! 已經存在。
處理時發生錯誤: 8!。
系統找不到指定的檔案。
特倫斯 iT邦新手 5 級 ‧ 2020-02-27 21:34:38 檢舉

我再修改一下指令,檔案日期的資料夾有建立出來,但裡面是空的,反而多出一些資料夾,兩個jpg圖檔也不在正確的資料夾內,還請大大賜教https://ithelp.ithome.com.tw/upload/images/20200227/20125113JPg308jnH6.jpg

D:\test>FOR /F %i in ('dir /b *.jpg') do (FOR /F "tokens=1-3 delims=/ " %a IN ('dir /t *.jpg') DO (SET FileDate=%a%b%c   & SET File=%i   & md "%a%b%c"   & move "%i" "%a%b%c" ) )

D:\test>(FOR /F "tokens=1-3 delims=/ " %a IN ('dir /t *.jpg') DO (SET FileDate=%a%b%c   & SET File=2012-02-12-12.23.37.jpg   & md "%a%b%c"   & move "2012-02-12-12.23.37.jpg" "%a%b%c" ) )

D:\test>(SET FileDate=磁碟區D中的磁碟是   & SET File=2012-02-12-12.23.37.jpg   & md "磁碟區D中的磁碟是"   & move "2012-02-12-12.23.37.jpg" "磁碟區D中的磁碟是" )
移動         1 個檔案。

D:\test>(SET FileDate=磁碟區序號:82CB-D62E   & SET File=2012-02-12-12.23.37.jpg   & md "磁碟區序號:82CB-D62E"   & move "2012-02-12-12.23.37.jpg" "磁碟區序號:82CB-D62E" )
目錄名稱無效。
系統找不到指定的檔案。

D:\test>(SET FileDate=D:\test的目錄   & SET File=2012-02-12-12.23.37.jpg   & md "D:\test的目錄"   & move "2012-02-12-12.23.37.jpg" "D:\test的目錄" )
子目錄或檔案 D:\test的目錄 已經存在。
系統找不到指定的檔案。

D:\test>(SET FileDate=20150329   & SET File=2012-02-12-12.23.37.jpg   & md "20150329"   & move "2012-02-12-12.23.37.jpg" "20150329" )
系統找不到指定的檔案。

D:\test>(SET FileDate=20200115   & SET File=2012-02-12-12.23.37.jpg   & md "20200115"   & move "2012-02-12-12.23.37.jpg" "20200115" )
系統找不到指定的檔案。

D:\test>(SET FileDate=2個檔案2,076,224   & SET File=2012-02-12-12.23.37.jpg   & md "2個檔案2,076,224"   & move "2012-02-12-12.23.37.jpg" "2個檔案2,076,224" )
系統找不到指定的檔案。

D:\test>(SET FileDate=0個目錄373,796,753,408   & SET File=2012-02-12-12.23.37.jpg   & md "0個目錄373,796,753,408"   & move "2012-02-12-12.23.37.jpg" "0個目錄373,796,753,408" )
系統找不到指定的檔案。

D:\test>(FOR /F "tokens=1-3 delims=/ " %a IN ('dir /t *.jpg') DO (SET FileDate=%a%b%c   & SET File=2012035897.jpg   & md "%a%b%c"   & move "2012035897.jpg" "%a%b%c" ) )

D:\test>(SET FileDate=磁碟區D中的磁碟是   & SET File=2012035897.jpg   & md "磁碟區D中的磁碟是"   & move "2012035897.jpg" "磁碟區D中的磁碟是" )
子目錄或檔案 磁碟區D中的磁碟是 已經存在。
移動         1 個檔案。

D:\test>(SET FileDate=磁碟區序號:82CB-D62E   & SET File=2012035897.jpg   & md "磁碟區序號:82CB-D62E"   & move "2012035897.jpg" "磁碟區序號:82CB-D62E" )
目錄名稱無效。
系統找不到指定的檔案。

D:\test>(SET FileDate=D:\test的目錄   & SET File=2012035897.jpg   & md "D:\test的目錄"   & move "2012035897.jpg" "D:\test的目錄" )
子目錄或檔案 D:\test的目錄 已經存在。
系統找不到指定的檔案。

D:\test>(SET FileDate=20200115   & SET File=2012035897.jpg   & md "20200115"   & move "2012035897.jpg" "20200115" )
子目錄或檔案 20200115 已經存在。
系統找不到指定的檔案。

D:\test>(SET FileDate=1個檔案1,511,670   & SET File=2012035897.jpg   & md "1個檔案1,511,670"   & move "2012035897.jpg" "1個檔案1,511,670" )
系統找不到指定的檔案。

D:\test>(SET FileDate=0個目錄373,796,753,408   & SET File=2012035897.jpg   & md "0個目錄373,796,753,408"   & move "2012035897.jpg" "0個目錄373,796,753,408" )
子目錄或檔案 0個目錄373,796,753,408 已經存在。
系統找不到指定的檔案。
特倫斯 iT邦新手 5 級 ‧ 2020-02-29 10:35:22 檢舉

我再修正了一下指令,圖檔都已經依檔案的日期存入檔案日期的資料夾內,但系統的訊息會自動建立資料夾(如下圖黑框內),是否有指令在跑bat時不會產生這些資料夾嗎?(因為我有3萬多個圖檔,也就是會多建3萬多個系統訊息的資料夾)https://ithelp.ithome.com.tw/upload/images/20200229/20125113epxj1Td5Fe.jpg

特倫斯 iT邦新手 5 級 ‧ 2020-03-01 14:53:05 檢舉

已解決

我要發表回答

立即登入回答