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