将 2 个最新文件复制到另一个文件夹中的批处理文件

Batch file to copy 2 most recent files into another folder

我一直在网上寻找,但似乎找不到我要找的东西。在开始之前,我绝不是经验丰富的命令行用户,所以请保持温和。

我需要一个批处理文件,它将两个最新的文件从一个目录复制到另一个目录,然后我需要删除目标文件夹中的文件,只留下这两个最新的可见文件。

值得注意的是,我尝试了 /d 命令(不包括日期)但是,这开始复制所有文件而不是最新的文件。

请帮忙?

谢谢

未测试:

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

你的描述有点颠倒了。
首先将文件复制到目的地,然后删除除两个新文件之外的所有文件,这有点笨拙。

  • 您可以评估这两个文件并记住名称(在数组中)
  • 删除目标
  • 中的所有个文件
  • 最后复制记忆的文件

无礼窃取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

以下脚本用于复制文件夹中现有的最新 4 个文件:

@ECHO OFF
:: Variables are A, B, C, D
DIR "C:\Users\singh\Desktop\Writing Tool\sourcefolder\*.fileextension" /A:-D /O:-D /B /S > filelist.tmp
3<filelist.tmp (
  for %%a in (A B C D) do (
    set /p %%a=<&3
  )
)
del filelist.tmp
:: Newest File
copy "%A%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder" 
:: Second Newest File
copy "%B%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder" 
:: Thirst Newest File
copy "%C%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder" 
:: Fourth Newest File
copy "%D%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder" 

TIMEOUT 4