【问题标题】:Batch file to check time stamp of a file批处理文件检查文件的时间戳
【发布时间】:2016-02-21 10:45:04
【问题描述】:

我正在寻找一个批处理文件脚本,它可以检查文件夹中文件的最后修改时间戳并检查它是否属于当前月份和年份。

我可能需要在一个批次中检查多个文件。 如果满足这个条件,我需要批处理文件将它们复制到不同的文件夹中。

非常感谢任何帮助。

谢谢。

【问题讨论】:

  • for /? 或 forfiles /? 或 xcopy /?

标签: windows batch-file timestamp


【解决方案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

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 文件顶部的文件来使用它

【讨论】:

  • 您好,谢谢您的回复。这里只是一个问题。如果我想获得带有文件名的确切文件夹路径,并说我在此路径中有一些具有不同扩展名的 4 个不同文件,我该如何提及这些具体细节?示例: C:\ABC.txt ; C:\DEF.csv C:\GHR.xls ; C:\XYZ.txt 必须准确检查这些名称并将它们移动到 C:\myname\ 文件夹!
  • 您能举例说明一下吗?您只想复制特定文件夹中具有特定名称但具有不同扩展名的文件?
  • 这个文件夹中还有很多其他文件,这就是我需要它具体的原因。
  • 输入文件:C:\ABC.txt C:\DEF.csv C:\GHR.xls C:\XYZ.txt 这些确切的文件必须根据它们的时间戳进行检查。检查必须是 tis 文件是否属于 2016 年 2 月(当前月份和年份)。如果是,则必须将这些文件单独从 C:\(源)复制到 C:\myname\(目标)文件夹。完成后,一条消息说成功/失败会很好地说明复制了多少文件。
  • 所以他们都有不同的文件名?如果您知道哪个文件具有哪个扩展名,为什么不同时指定文件名和扩展名?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
相关资源
最近更新 更多