【问题标题】:How to use "find" command to get files created yesterday?如何使用“查找”命令获取昨天创建的文件?
【发布时间】:2014-02-12 19:23:09
【问题描述】:

我正在运行一个批处理文件,该文件获取目录下所有文件和子文件夹的列表。然后我将从该列表中过滤掉今天和昨天创建的一些特定文件。我在查找昨天创建的文件时遇到了一些困难,我想%date% - 1 可能会起作用,但事实并非如此。谁可以帮我这个事 ?谢谢

REM SETUP CREATE TIME
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2% %ldt:~8,2%:%ldt:~10,2%:%ldt:~12,6%


REM LIST OF FILES AND FOLDERS

dir /s "K:\AppData\Released_To_Production" > "C:\K_RLTP_FILES.txt"
dir /a:d /t:w /s "K:\AppData\Released_To_Production" > "C:\K_RLTP_Folders.txt"

REM TODAY'S CATIA FILES

echo List is Created @  [%ldt%] > "C:\catia_result.txt"
echo -------------------------------------------- >> "C:\catia_result.txt"
echo -------------------------------------------- >> "C:\catia_result.txt"
find ".model" "C:\K_RLTP_FILES.txt" | find "%date%" >> "C:\catia_result.txt"
find ".CATPart" "C:\K_RLTP_FILES.txt" | find "%date%" >> "C:\catia_result.txt"

【问题讨论】:

  • 看看forfiles /?
  • 我正在尝试过滤txt中带有昨天日期的行,我认为这里不能使用forfiles.....
  • 好吧 - 不直接。但考虑一些角落会有所帮助。看我的回答。

标签: windows batch-file cmd batch-processing


【解决方案1】:
@echo off
REM get all files older than 5 days:
forfiles /s /d -5 /c:"cmd /c echo @path" >a.txt
REM get all files:
forfiles /s /c:"cmd /c echo @path" >b.txt
REM get all files minus files older than 5 days:
findstr /v /g:a.txt b.txt

注意:我选择了 5 天进行测试。对于今天和昨天更改的文件,您必须使用 -1 而不是 -5

【讨论】:

  • 感谢您的帮助。这可能比找出昨天的日期更容易。
  • 这将包括今天创建的所有文件。还有什么办法可以避免这种情况?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
相关资源
最近更新 更多