0

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

我曾尝试使用 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"
4

2 回答 2

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)
    }
于 2019-08-09T16:06:20.543 回答
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"
于 2019-08-09T19:05:23.453 回答