我正在寻找一个批处理文件脚本,可以检查文件夹中文件的最后修改时间戳,并检查它是否属于当前月份&年。
我可能需要在一个批次中检查多个文件。 如果满足这个条件,我需要批处理文件将它们复制到另一个文件夹中。
非常感谢任何帮助。
感谢。
答案 0 :(得分:1)
你可以试试这个:
@echo off
setlocal EnableDelayedExpansion
mkdir "someNewFolder"
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "compareDate=%dt:~0,6%"
FOR %%i IN (*) DO (
for /f "tokens=2,3 delims=-: " %%g in ("%%~ti") do if "%%h%%g"=="!compareDate!" copy "%%i" "someNewFolder\%%~nxi"
)
pause
修改强>
这也应该有用......
echo D | xcopy "." "someNewFolder" /D:02-01-2016 /Y
或者,不是硬编码:
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%"
echo D | xcopy "." "someNewFolder\." /D:%MM%-01-%YYYY% /Y
编辑2 要仅复制某个目录中具有特定名称的文件,请使用以下命令:
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%"
echo D | xcopy "C:\Directory\Filename.*" "C:\someNewFolder" /D:%MM%-01-%YYYY% /Y
或
echo D | xcopy "C:\Directory\Filename.*" "C:\someNewFolder" /D:02-01-2016 /Y
对于你的四个不同的文件,这样的事情是这样的:
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%"
echo D | xcopy "C:\ABC.txt" "C:\myname\Destination_folder" /D:%MM%-01-%YYYY% /Y
echo D | xcopy "C:\GHR.xls" "C:\myname\Destination_folder" /D:%MM%-01-%YYYY% /Y
echo D | xcopy "C:\DEF.csv" "C:\myname\Destination_folder" /D:%MM%-01-%YYYY% /Y
echo D | xcopy "C:\XYZ.txt" "C:\myname\Destination_folder" /D:%MM%-01-%YYYY% /Y
编辑3
最后,一个允许拖放要检查的所有文件的脚本:
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%"
:loop
if "%~1"=="" goto :end
echo D | xcopy "%~1" "someNewFolder" /D:%MM%-01-%YYYY% /Y
shift
goto :loop
:end
pause
您可以通过拖动.bat文件顶部的文件
来使用它