Powershell und Regex: Liste der Notepad++-Dateien „beim Speichern sichern“. Namen bearbeiten, nach letztem Schreibzeitpunkt sortieren

Powershell und Regex: Liste der Notepad++-Dateien „beim Speichern sichern“. Namen bearbeiten, nach letztem Schreibzeitpunkt sortieren
# 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-Objectoder 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-Memberso 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.

verwandte Informationen