2017-07-03 45 views
0

我一直在網上尋找,似乎無法找到我要找的東西。在我開始之前,我絕不是經驗豐富的命令行用戶,所以請溫和。批處理文件將2個最新文件複製到另一個文件夾中

我需要一個批處理文件,將兩個最新的文件從一個目錄複製到另一個目錄,然後我需要刪除目標文件夾中的文件,這些文件只會使這兩個文件最新可見。

值得注意的是,我試過/ d命令(不包括日期),但是,這開始複製所有文件而不是最新的文件。

請幫忙?

感謝

回答

0

你的描述有點顛倒。
首先將文件複製到目標文件然後刪除除了兩個新文件之外的所有文件都有點笨拙。

  • 您可以評估這兩個文件並記住的名字(數組中的)
  • 刪除所有文件在dest
  • 終於複製想起文件

無禮偷竊 npocmaka的編碼爲:

@Echo off 
setlocal enableDelayedExpansion 
set "source=c:\source_folder" 
set "target=c:\target" 

PushD "%source%" 
set "counter=0" 
for /f "tokens=* delims=" %%A in ('dir "*.bak" /b /o:-d /t:w') do (
    set /a counter+=1 
    Set Copy[!counter!]=copy "%%~fA" "%target%\" 
    if !counter! equ 2 goto :break 
) 
:break 
Del /Q "%target%\*" 
For /L %%C in (1,1,%counter%) Do !Copy[%%C]! 
PopD 
+0

嗨, 感謝您的反饋,我剛剛試過這段代碼,目標文件夾中的兩個較舊的文件刪除,但沒有任何複製,而是我留下一個錯誤提示:環境變量複製[目標「未定義 這似乎是兩個單獨的行。我缺少的東西? – Admaine

+0

很抱歉,百分號缺失,改變。 – LotPings

+0

嗯,這段代碼似乎只是從目標文件夾刪除文件,而不是與較新的替換它。源是C:\用戶\用戶名\桌面\備份和目標是H:\ ePay備份。我不確定這是否會有所幫助,需要傳輸的文件是.bak – Admaine

0

未測試:

setlocal enableDelayedExpansion 
set "source=c:\source" 
set "target=c"\target" 

set "counter=0" 

for /f "tokens=* delims=" %%# in ('dir "%source%" /b /o:-d /t:c /a:-d') do (
    set /a counter=counter+1 
    echo "%%#" 
    copy "%source%\%%#" "%target%" /Y 
    if !counter! equ 2 goto :break 

) 
:break 
+0

嗨,感謝您的輸入:)不幸的是,在修改代碼以包含我的源文件夾和目標文件夾之後,它不會複製或刪除。你有任何進一步的建議嗎? – Admaine

+0

@Admaine - 我編輯了我的腳本。 1)需要在複製命令中加入源目錄。 2)dir命令也可能列出目錄,所以我將它們過濾掉了。我已經測試過這個,它工作。 – npocmaka

相關問題