# Microsoft Windows [Version 10.0.17134.648]
# powershell 5.1.17134.48
# Calculate time to complete task using Notepad++ "backup on save" feature. Create a copy and paste table of files sorted by LastWriteTime.
# Can be used as a shortcut: powershell -noexit $time = (Get-Date).AddDays(-1); gci * -exclude _*, 1* | where {$_.LastWriteTime -gt $time}| sort -property LastWriteTime -descending | Format-Table LastWriteTime, length, @{n='foo';e={$_.Name -replace '(?<=^.*\.html).*$' -replace '(?<=^.*\.jpg).*$'}} -HideTableHeaders
# start it in %userprofile%\Documents\NOTEPAD++ AUTOBACKUP
Set-Location -Path "$env:userprofile\Documents\NOTEPAD++ AUTOBACKUP"
# how old a file? Today? 4 days old?
$time = (Get-Date).AddDays(-1)
# $time = (Get-Date).AddDays(-4)
# do you want to exclude files with -exclude? Do you want to include with -include?
gci * -exclude _*, 1* | where {$_.LastWriteTime -gt $time}| sort -property LastWriteTime -descending | Format-Table LastWriteTime, length, @{n='foo';e={$_.Name -replace '(?<=^.*\.html).*$' -replace '(?<=^.*\.jpg).*$'}} -HideTableHeaders
gci * -exclude _*, 1* | where {$_.LastWriteTime -gt $time} | sort -property LastWriteTime -descending | Format-Table LastWriteTime, length, Name -HideTableHeaders
# gci * | where {$_.LastWriteTime -gt $time} | sort -property LastWriteTime -descending | Format-Table LastWriteTime, length, @{n='foo';e={$_.Name -replace '(?<=^.*\.html).*$' -replace '(?<=^.*\.jpg).*$'}} -HideTableHeaders
# gci * -include [0-9][0-9][0-9]*, avail* | where {$_.LastWriteTime -gt $time} | sort -property LastWriteTime -descending | Format-Table LastWriteTime, length, @{n='foo';e={$_.Name -replace '(?<=^.*\.html).*$' -replace '(?<=^.*\.jpg).*$'}} -HideTableHeaders
Ausgänge:
5/4/2019 10 : 47 : 27 AM 114036 springhill_falls2bd750_885.jpg
5/4/2019 10 : 45 : 25 AM 1301974 springhill_falls2bd750_885.psp
5/4/2019 10 : 37 : 08 AM 19268 springhill_falls2bd13.html
5/4/2019 10 : 37 : 08 AM 94007 available13.html
5/4/2019 10 : 37 : 08 AM 36729 index.html
5/4/2019 10 : 32 : 16 AM 62801 aj.php
Und:
5/4/2019 10 : 47 : 27 AM 114036 springhill_falls2bd750_885.jpg.2019-05-04_104748.bak
5/4/2019 10 : 45 : 25 AM 1301974 springhill_falls2bd750_885.psp.2019-05-04_105221.bak
5/4/2019 10 : 37 : 08 AM 19268 springhill_falls2bd13.html.2019-05-04_105856.bak
5/4/2019 10 : 37 : 08 AM 94007 available13.html.2019-05-04_105657.bak
5/4/2019 10 : 37 : 08 AM 36729 index.html.2019-05-04_105657.bak
5/4/2019 10 : 32 : 16 AM 62801 aj.php.2019-05-04_103229.bak
Microsoft Windows [Version 10.0.17134.648]
powershell 5.1.17134.48
Berechnen Sie die zum Abschließen der Aufgabe benötigte Zeit mit der Funktion „Sichern beim Speichern“ von Notepad++ / NPP / Notepad Plus.
Erstellen Sie eine Kopier- und Einfügetabelle mit Dateien, sortiert nach LastWriteTime.
Kann als Abkürzung verwendet werden:
powershell -noexit $time = (Get-Date).AddDays(-1); gci * -exclude _*, 1* |
where {$_.LastWriteTime -gt $time} | sort -property LastWriteTime -descending |
Format-Table LastWriteTime, length, @{n='foo';e={$_.Name
-replace '(?<=^.*\.html).*$' -replace '(?<=^.*\.jpg).*$'}} -HideTableHeaders
Starten Sie es in dem Verzeichnis, in dem Ihr NPP-Autobackup gespeichert ist. Meine Dateien werden gesichert in%userprofile%\Documents\NOTEPAD++ AUTOBACKUP
Dieses Skript erstellt eine formatierte Tabellenausgabe mit den bearbeiteten Dateinamen, der Größe, dem Datum und der Uhrzeit jedes Schreibvorgangs in die Datei. Es ist einfach zu ändern, nach welchen Dateien gesucht werden soll, wie die Dateinamen bearbeitet werden sollen und wie viele Tage alt eine Datei sein soll, nach der gesucht werden soll. Dies ist eine praktische Möglichkeit, den Überblick darüber zu behalten, wie lange an einer Datei gearbeitet wird, wie lange die Fertigstellung einer Aufgabe gedauert hat und wie lange ein Projekt dauert.
Weitere Informationen zum regulären Ausdruck finden Sie in der LotPing-Antwort weiter unten.
Antwort1
Ich würde einen RegEx verwenden mitLookbehind-Assertion mit der Länge Nullum alles zu entfernen, nachdem html
von$_.Name
Dies kann mit einer berechneten Eigenschaft entweder in einem Select-Object
oder auch in einemFormat-*
Get-ChildItem -File |
Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*\.html).*$'}},Name -HideTableHeaders
Beispielausgabe:
available13.html available13.html.2019-03-26_081523.bak
index.html index.html.2019-03-26_081538.bak
Antwort2
Sie können eine neue Eigenschaft hinzufügen mitAdd-Member
so was
$time = (Get-Date).AddDays(-4)
$files = gci * -include index*,avail* | where {$_.LastWriteTime -gt $time}
foreach ($f in $files) {
$f | Add-Member noteproperty newName -Value `
$f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)
}
$files | Format-Table -HideTableHeaders newName,Length,LastWriteTime
Beachten Sie, dass der obige Codeausschnitt davon ausgeht, dass Ihre Namen immer mit enden .yyyy-mm-dd_iiiiii.bak
. Wenn sie ein anderes Format haben, müssen Sie diese Information in die Frage aufnehmen und möglicherweise andere Stringmethoden wie replace, substring... verwenden, um den unnötigen Teil zu entfernen.