2017-03-13 256 views
0

美好的一天,使用批處理文件修改日期重命名文件

我很可能是新建批處理文件。我的目標是將文件從源文件複製到目標文件夾,並在修改日期後將文件重命名爲目標文件夾。我已經退出獲取修改日期的挑戰。它用CURRENT DATE顯示或重命名文件,而不是修改日期。這是我送給你的參考代碼:

@echo off 
setLocal EnableDelayedExpansion 
::set tDate=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2% 
set tDate=%date:~7,2%-%date:~4,2%-%date:~10,4% 
set source="C:\Source Folder" 
set target=%userprofile%\Desktop\backup 
for %%i in (%source%\AL*.*) do (
::set myfiledate=%%~ta 
copy "%%i" "%target%\%tDate%_%%~nxi" 
) 

我真的很感謝你對此事的輸入

感謝

+0

因此,您從當前日期開始設置'tdate',然後掃描目錄並使用'tdate'複製文件,因此毫不奇怪目標文件的當前日期是其名稱的一部分。在代碼塊中使用':: comment'是一種不好的做法 - 這是一個破碎的標籤,可能會導致意外的結果。 – Magoo

+0

感謝您的輸入。我會考慮那個評論。所以我如何提取修改日期並將其附加到文件名上。 – Djspooch

+0

閱讀'for'的幫助(在'commad提示符窗口中輸入'for /?',特別是'〜'修飾符的部分;你會發現有一種方法可以獲得最後的修改日期;請注意,這會以與區域相關的方式返回日期,就像'%DATE%'和'%TIME%'變量一樣...... – aschipfl

回答

0
... 
for %%i in (%source%\AL*.*) do (
set myfiledate=%%~ti 
ECHO(copy "%%i" "%target%\!myfiledate:~0,2!!myfiledate:~5,2!!myfiledate:~6,4!_%%~nxi" 
) 

我假設你想在新文件中的日期格式aabbyyyy,但我建議你使用YYYYMMDD來簡化排序。

我也建議你echo開始荷蘭國際集團的複製命令,以確保它是正確的(如上圖所示) - 只是刪除echo(實際副本。

根據您的設置和要求,可能需要更改三個連接日期元素!myfiledate:~x,y!的順序。他們應該提取年,月和日。

+0

感謝您的回覆。我試過了代碼,它做了複製,但修改後的日期沒有顯示在文件名上。從這個到這個文件名: 13-03-2017_AL&PP(3)到_AL&PP(3) – Djspooch

+0

我只是複製你的代碼並刪除了'::'註釋。元變量'%% i'正在被使用,它必須與賦值中使用的元變量相匹配。 – Magoo

+0

我只是複製你的代碼,並刪除'::'註釋。元變量'%% i'正在被使用,它必須與賦值中使用的元變量相匹配。 – Magoo