2017-09-23 118 views
0

這是蝙蝠腳本我用我的數據備份:批處理(.bat)備份腳本>空文件夾不會複製

ECHO OFF 
set source="[source path]" 
set destination="[destination path]" 

for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd1=%%j"."%%i"."%%k 

if exist %destination% goto GO 
:GO 
mkdir %destination%%yyyymmdd1% 
xcopy %source%* %destination%%yyyymmdd1% /s/d/y/c/v/r 
echo. 
echo Finished copying %source% to %destination% 
echo. 
echo Created %destination%%yyyymmdd1% 

pause 

的主要問題:它不會複製空文件夾,因此它需要一個實際的文件,以考慮文件夾本身。

好看的擴展:腳本當前比較源文件夾和目標文件夾,並複製更新的文件。我如何實現按日期/日期的目的地文件夾結構比較,然後是小時(=文件夾(「9/22/2017」)/文件夾(「7am」)/ [完整源文件夾/文件],這將使我回到文件我創建一個小時前,如果我有腳本計劃頻繁。

我根據我的需要稍微調整了腳本,但我不是原始創建者。我試圖讓更好的.bat腳本和幫助將一如既往,不勝感激

+0

除了Magoo的有用答案之外,'if exists'和標籤是無用的,因爲程序流程將會到達下一個語句。另外'mkdir'將創建具有enabledextensions的中間文件夾(默認)。你的報價方案有點奇怪 - 你爲什麼要分別在日期中引用點?最好的報價只有完整的路徑。 – LotPings

回答

1

的空目錄問題:閱讀xcopy文件(從提示:xcopy /?),並注意/e開關

時間問題:不同的人使用不同的格式。關於如何在批處理中提取時間元素的問題,有許多關於SO的文章。使用第一行中的search工具來查找它們。你已經有了一個框架來附加date - 它本質上是一樣的。

時間和日期的文章還將指導您如何對使用的不同日期/時間格式進行調整,並可能就應用程序的日期/時間格式提供建議,以便於排序和識別(ISO風格yyyymmddhhmmss)

+0

非常有幫助的輸入!第二部分要清楚:我不希望.bat創建一個文件夾,它指定一個日期和時間,我希望它創建一個日期文件夾,並在日期文件夾中創建一個時間文件夾。這似乎不像日期/時間格式的問題,而是在循環內重新分配目標文件夾。 – FatTwin

+0

'md'命令將創建所需的任何中間路徑段,因此'md「some_path \ yyyymmdd \ hhmmss」'將在其下創建日期級別和時間級別(反向目錄的反斜槓 - 正斜槓用於winbatch中的開關)。準確的實現僅僅是適當地放置反斜槓的問題 - 但可視化*讀取*日期/時間遵循yyyymmddhhmmss格式。 – Magoo