2016-08-24 82 views
-1

我有一個bat文件,它執行以下操作。.bat文件xcopy文件僅基於具有時間戳的文件名

xcopy c:\folder\*.* d:\another_folder\. 
del *.xml 
del *.lst 

生成的文件在其名稱中加入時間戳:

MY_FILE_11111_08-23-2016_111111.xml

格式爲MM-DD-YYYY_HHMMSS

第三 _後的日期時間開始

如何編寫bat命令,該命令僅在文件名具有今天的日期時纔會複製?

+0

根據您的系統日期格式,它可以這麼簡單:'xcopy c:\ folder \ *%date:/ = - %* d:\ another_folder \ .' – wOxxOm

+0

您到目前爲止嘗試過什麼?請分享你的努力!文件名中的日期/時間格式是否符合'date/T'和'time/T'命令返回的格式? – aschipfl

回答

0

有預定義的環境變量DATE它保存當前的本地日期格式由Windows區域設置定義。在命令提示窗口運行線

echo %DATE% 

在輸出的情況下是08/23/2016(MM/DD/YYYY)只是各斜線必須在字符串中由連字符被替換爲wOxxOm與一襯墊命令已經建議線。

set "FileDate=%DATE:/=-%" 
%SystemRoot%\System32\xcopy.exe "C:\Folder\*%FileDate%*" "D:\Another_Folder\" 

但是,如果輸出例如Tue, 23/08/2016(與平日),或只是23/08/2016(沒有平日),這將是這兩個日期格式的例子當前日期字符串,必須重新格式化:

set "FileDate=%DATE:~-7,2%-%DATE:~-10,2%-%DATE:~-4%" 
%SystemRoot%\System32\xcopy.exe "C:\Folder\*%FileDate%*" "D:\Another_Folder\" 

怎樣的角色在命令SET的幫助下解釋了替換(第一種方法)分別串聯的特定子串(第二種方法)的工作,可以通過打開命令提示符窗口並運行set /?help set來讀取它。

如果只是一個單一的文件必須被複制,這是最可能足夠使用Windows命令處理器,而不是標準的Windows控制檯應用程序(外部命令)xcopy.exe的內部命令COPY。在命令提示符窗口copy /?xcopy /?中運行以顯示這兩個複製命令的幫助信息。