【发布时间】:2016-02-21 10:45:04
【问题描述】:
我正在寻找一个批处理文件脚本,它可以检查文件夹中文件的最后修改时间戳并检查它是否属于当前月份和年份。
我可能需要在一个批次中检查多个文件。 如果满足这个条件,我需要批处理文件将它们复制到不同的文件夹中。
非常感谢任何帮助。
谢谢。
【问题讨论】:
-
for /?或forfiles /?或xcopy /?
标签: windows batch-file timestamp
我正在寻找一个批处理文件脚本,它可以检查文件夹中文件的最后修改时间戳并检查它是否属于当前月份和年份。
我可能需要在一个批次中检查多个文件。 如果满足这个条件,我需要批处理文件将它们复制到不同的文件夹中。
非常感谢任何帮助。
谢谢。
【问题讨论】:
for /? 或 forfiles /? 或 xcopy /?
标签: windows batch-file timestamp
你可以试试这个:
@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
EDIT 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 文件顶部的文件来使用它
【讨论】: