forfiles修改后的文件(不包括新创建的文件)

时间:2019-08-09 12:06:20

标签: batch-file cmd forfiles

我正在尝试编写代码,使我能够识别自月初以来已被修改但不是新创建的文件夹中的文件(表示修订版本)。输出已更改文件的数量比已修改文件的名称更重要,但是可以是任意一个。

我尝试使用forfiles实现此目的,但是如果不列出新创建的文件,我将无法弄清楚该怎么做。

我认为,也许搜索在月初之前创建但在上个月内已修改的文件可能是答案,但是不确定如何执行此操作。到目前为止,我的代码仍显示新创建的文件。

@echo off
REM set revisions folder path


 set revisions="C:\Users\nlehman\Desktop\New folder (3)\\"
 forfiles /P %revisions% /S /D +08/01/2019 > "Revisions last 30days.txt"

2 个答案:

答案 0 :(得分:1)

我将制作一个SWAG,并认为您想标识当月写入的文件,但创建的时间早于上次写入的时间。靠近吗?

将所有四(4)个文件放在同一目录中。假设如果创建时间和上次写入时间之间的差小于一(1)秒,则表示没有修订。

=== revs.bat

@powershell -NoLogo -NoProfile -File "%~dp0revs.ps1"

=== revs.ps1

$RevDir = 'C:\Users\nlehman\Desktop\New folder (3)'
$CloseEnough = New-Timespan -Seconds 1
Get-ChildItem -File -Recurse -Path $RevDir |
    Where-Object {
        ($_.LastWriteTime -ge (Get-Date (Get-Date) -day 1 -hour 0 -minute 0 -second 0)) -and
        (($_.LastWriteTime - $_.CreationTime) -gt $CloseEnough)
    }

=== revsnot.bat

@powershell -NoLogo -NoProfile -File "%~dp0revsnot.ps1"

=== revsnot.ps1

$RevDir = 'C:\Users\nlehman\Desktop\New folder (3)'
$CloseEnough = New-Timespan -Seconds 1
Get-ChildItem -File -Recurse -Path $RevDir |
    Where-object {
        ($_.LastWriteTime -ge (Get-Date (Get-Date) -day 1 -hour 0 -minute 0 -second 0)) -and
        (($_.LastWriteTime - $_.CreationTime) -lt $CloseEnough)
    }

答案 1 :(得分:0)

这将伤害所有阅读它的人的眼睛,因为它很可能是该网站历史上绝对最糟糕的编码,但是它可以达到目的,并且是我目前所能做到的最好的选择。我仍然在学习这些东西,尽管确实可以,但是我真的很想知道如何将结果放入变量中,这样我就不必像对待.txt文件那样做了。

@echo off
setlocal enabledelayedexpansion
set revisions="C:\Users\nlehman\Desktop\New folder (3)\\"

dir %revisions% /T:C /A-D /O:-D > %revisions%"creation date.txt"
dir %revisions% /T:W /A:-D /O:-D > %revisions%"modified date.txt"

findstr /vig:"C:\Users\nlehman\Desktop\New folder (3)\creation date.txt" "C:\Users\nlehman\Desktop\New folder (3)\modified date.txt" > "C:\Users\nlehman\Desktop\New folder (3)\difference.txt"

findstr /b "08/"  difference.txt > "rev changes.txt"
find /v /c "" "rev changes.txt" > revs.txt

del %revisions%"creation date.txt"
del %revisions%"modified date.txt"
del %revisions%"difference.txt"

type "rev changes.txt" "revs.txt" > "revisions.txt"

del %revisions%"rev changes.txt"
del %revisions%"revs.txt"