我需要从文件夹中复制特定扩展的最后修改文件。例如,某个文件夹包含:
- 文件1.cas
- 文件1.txt
- 文件2.cas
- 文件2.txt
- 文件3.cas
- 文件3.pptx
- ...
- 文件100.cas
- 文件100.pptx
- 文件100.doc
修改日期和时间对于 file56.cas 来说是最新的 我只想复制 file56.cas,同时正常复制其他扩展名的文件,并忽略没有扩展名的文件(已配置的部分)。
为了忽略没有扩展名的文件,我使用了此处找到的解决方案:
排除没有扩展名的文件 - XCOPY 或 ROBOCOPY
具体代码为:
robocopy source destination /xf *.?
答案1
xcopy
无法仅复制具有特定扩展名的最新文件。
以下(未经测试的)批处理代码将复制最新
.cas
文件:
for /f "delims=" %%i in ('dir /b /a-d /od "path-to-folder\*.cas"') do set "LastFile=%%~i"
copy "path-to-folder\%LastFile%" "C:\target-folder\"
此代码旨在在.bat
文件内部使用。
答案2
@echo off
cd /d "D:\Source\Folder" || exit
set "_destiny=Z:\Destination\Folder"
for /f delims^= %%i in =;(' dir /b /a:-d /o:-d /tc *.cas '
);= do copy "%%~dpnxi" "%_destiny%" /y /v & goto %:^(
%:^(
rem./ continue or & exit /b
1.列出你的文件和for /f .. ( dir ...)do ...
循环
2使用按日期列出的列表,默认情况下从最旧到最新显示,然后反转日期顺序/o-d
3.使用为您的任务列出的第一个文件copy
,然后退出而不复制循环中列出的其余文件goto :label
4.继续执行你的 bat/codes 或退出(如果没有更多执行)exit