Ähnliche Dateinamen finden und markieren
Moderators: Hacker, Stefan2, white
Ähnliche Dateinamen finden und markieren
Guten Tag allseits
in einem Verzeichnis gibt es Grunddaten (z.B. 1.doc, 2.do3, 3.doc, 4.doc) und daraus erzeugte "Produkte" (z.B. 1.pdf, 2.pdf, 3.pdf, 5.pdf).
Jetzt gibt es dazu verschiedene Aufgaben:
a) "Finde alle DOC, zu denen es kein PDF gibt" (z.B. 4.doc)
b) "Finde alle PDF, zu denen es kein DOC gibt" (z.B. 5.pdf)
c) Finde alle PDF, die älter als die zugehörige DOC und daher nicht mehr aktuell sind"
Natürlich soll das recht flexibel sien und sich nicht nur auf DOC und PDF beschränken. Man könnte natürlich die Dateiinfo in Access kopieren und dort arbeiten, aber eine Traumlösung ist das nicht.
Kennt jemand eine TC taugliche Lösung?
Peter
in einem Verzeichnis gibt es Grunddaten (z.B. 1.doc, 2.do3, 3.doc, 4.doc) und daraus erzeugte "Produkte" (z.B. 1.pdf, 2.pdf, 3.pdf, 5.pdf).
Jetzt gibt es dazu verschiedene Aufgaben:
a) "Finde alle DOC, zu denen es kein PDF gibt" (z.B. 4.doc)
b) "Finde alle PDF, zu denen es kein DOC gibt" (z.B. 5.pdf)
c) Finde alle PDF, die älter als die zugehörige DOC und daher nicht mehr aktuell sind"
Natürlich soll das recht flexibel sien und sich nicht nur auf DOC und PDF beschränken. Man könnte natürlich die Dateiinfo in Access kopieren und dort arbeiten, aber eine Traumlösung ist das nicht.
Kennt jemand eine TC taugliche Lösung?
Peter
TC 10.xx / #266191
Win 10 x64
Win 10 x64
Man könnte das z.B. per Script für das Script Content Plugin lösen. Leider kann ich nicht programmieren, kenne mich nicht mal mit Scriptsprachen aus, also lasst für mein Erstlingswerk bitte Gnade vor Recht ergehen
:
Besonders flexibel ist das allerdings noch nicht. Kann man bestimmt optimieren.

Code: Select all
'Script for Script Content Plugin
'(c)Lev Freidin, 2005
'http://www.totalcmd.net/plugring/script_wdx.html
'http://wincmd.ru/plugring/script_wdx.html
Dim fso, f1, f2
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.GetFile(filename)
sBaseIst = lcase(fso.GetBaseName(filename))
sExtIst = lcase(fso.GetExtensionName(filename))
sDateModF1 = f1.DateLastModified
sExtSoll1 = "doc"
sExtSoll2 = "pdf"
Const ForReading = 1
Select Case sExtIst
Case sExtSoll1
sResult = sExtSoll2 & "-Pendant "
If fso.FileExists(sBaseIst & "." & sExtSoll2) Then
Set f2 = fso.GetFile(sBaseIst & "." & sExtSoll2)
sTimeDiff = DateDiff("n", sDateModF1, f2.DateLastModified)
If sTimeDiff < 0 Then
sResult = "2: " & sResult & "ist veraltet"
Else
sResult = "1: " & sResult & "ist aktuell"
End If
sResult = sResult & " (" & sTimeDiff & " Min. Diff.)"
Else
sResult = "3: " & sResult & "fehlt"
End If
Case sExtSoll2
If fso.FileExists(sBaseIst & "." & sExtSoll1) Then
Set f2 = fso.GetFile(sBaseIst & "." & sExtSoll1)
sTimeDiff = DateDiff("n", sDateModF1, f2.DateLastModified)
If sTimeDiff >= 0 Then
sResult = "2: Datei ist veraltet"
Else
sResult = "1: Datei ist aktuell"
End If
sResult = sResult & " (" & sTimeDiff & " Min. Diff.)"
Else
sResult = "3: " & sExtSoll1 & "-Pendant fehlt"
End If
Case Else
sResult = ""
End Select
content = sResult
Set fso=nothing
Set f1=nothing
Set f2=nothing
Guten Tag van Dusen
Peter
Immerhin hast du ein Script verfasst - und ich kann das gar nicht. Herzlichen Dank, ich muss mich mal mit meinen scripterfahrenen Kollegen zusammensetzen und auch das Plugin muss ich mir mal anschauen.van Dusen wrote:...Leider kann ich nicht programmieren, kenne mich nicht mal mit Scriptsprachen aus, also lasst für mein Erstlingswerk bitte Gnade vor Recht ergehen:
Peter
TC 10.xx / #266191
Win 10 x64
Win 10 x64
Hallo van Dusen
du hast auf http://www.ghisler.ch/board/viewtopic.php?t=8871 eine Anleitung verfasst, wie man das Script akiviert.
Ich habe nun
- das Plugin installiert
- die benutzerdefinierte Spalte angezeigt
- deinen Code genommen
- in "Dateivergleich.vbs" im Pluginverzeichnis gespeichert
- meine Script.ini geändert
- und dennoch geht es nicht
Ich glaube, in der ini ist was falsch ...
Peter
du hast auf http://www.ghisler.ch/board/viewtopic.php?t=8871 eine Anleitung verfasst, wie man das Script akiviert.
Ich habe nun
- das Plugin installiert
- die benutzerdefinierte Spalte angezeigt
- deinen Code genommen
- in "Dateivergleich.vbs" im Pluginverzeichnis gespeichert
- meine Script.ini geändert
- und dennoch geht es nicht

Ich glaube, in der ini ist was falsch ...
Peter
Code: Select all
[Script]
Section=Extension
;js
;Extension
;exe-arc up
;AddZeros
[Defaults]
LongName=1
ParseDirs=0
[Extension]
Script=ext.vbs
[AddZeros]
Script=AddZeros.vbs
LongName=0
[exe-arc up]
Script=Exeup.vbs
LongName=0
[js]
Script=java.js
LongName=0
Section=Dateivergleich
[Defaults]
LongName=0
[Dateivergleich]
Script=Dateivergleich.vbs
TC 10.xx / #266191
Win 10 x64
Win 10 x64
Danke - hat sich (fast) erledigt.
Ich habe jetzt den Aufbau besser verstanden: mit den "Section" wird auf die unten angefügten Bereich verwiesen, und es kann immer nur eine Section aktiv sein. Die anderen muss man auskommentieren.
Aber was "Longname" und "ParseDirs" bedeuten und was die warum machen, ist mir nicht klar.
Peter
Ich habe jetzt den Aufbau besser verstanden: mit den "Section" wird auf die unten angefügten Bereich verwiesen, und es kann immer nur eine Section aktiv sein. Die anderen muss man auskommentieren.
Aber was "Longname" und "ParseDirs" bedeuten und was die warum machen, ist mir nicht klar.
Peter
Code: Select all
[Script]
;Section=Extension
;Section=js
;Section=Extension
;Section=exe-arc up
;Section=AddZeros
Section=Dateivergleich
[Defaults]
LongName=1
ParseDirs=0
[Extension]
Script=ext.vbs
[AddZeros]
Script=AddZeros.vbs
LongName=0
[exe-arc up]
Script=Exeup.vbs
LongName=0
[js]
Script=java.js
LongName=0
[Dateivergleich]
Script=Dateivergleich.vbs
LongName=1
TC 10.xx / #266191
Win 10 x64
Win 10 x64
LongName=1Peter wrote:Aber was "Longname" und "ParseDirs" bedeuten und was die warum machen, ist mir nicht klar.
Es werden lange Dateinamen an das Plugin übergeben.
LongName=0
Mit "Longname=0" dürften wohl die kurzen 8.3-Dateinamen an das Plugin übergeben werden (was im vorliegenden Fall zu unerwünschten, weil falschen Ergebnissen führt). Zum Testen setze LongName einfach mal auf '0', dann wird vom Script <Dateivergleich.vbs> beim Vorliegen der Dateinamen
<Langer Dateiname.pdf> und
<Langer Dateiname.doc>
als Ergebnis
<Langer Dateiname.pdf>, Result: "3: doc-Pendant fehlt"
<Langer Dateiname.doc>, Result: "3: pdf-Pendant fehlt"
ausgegeben.
ParceDirs=1
Es werden auch Verzeichnisse (Verzeichnisnamen) vom Plugin ausgewertet.
ParceDirs=0
Es werden nur Dateien (Dateinamen) vom Plugin ausgewertet, Verzeichnisse werden ignoriert (Result ist immer leer)
Der Schlüssel heißt übrigens wider Erwarten nicht ParseDirs, sondern tatsächlich ParceDirs. Findet man so, wenn man in der wdx-Datei des Plugins mal nach der Zeichenfolge "ParceDirs" bzw. "ParseDirs" sucht.
Danke für den Hinweis, habe dadurch bemerkt, dass ich noch die alte Version 0.1 des Plugins in Gebrauch hatte.Peter wrote:Interessant - in der mitgelieferten script.ini steht Parsedirs ...
"ParceDirs" gilt nur für V0.1, mit Version 0.1.0.1 wurde das geändert und heißt seitdem korrekt "ParseDirs"
Sorry für die Verwirrung!
Und leider ist auch dies falsch, wie ich eben festgestellt habevan Dusen wrote:LongName=1
Es werden lange Dateinamen an das Plugin übergeben.
LongName=0
Mit "Longname=0" dürften wohl die kurzen 8.3-Dateinamen an das Plugin übergeben werden

LongName=1
Es werden absolute Dateipfade (LW:\Pfad\...\Dateiname) an das Plugin übergeben.
LongName=0
Es werden nur Dateinamen ohne den Pfad an das Plugin übergeben.
Ich hatte seinerzeit nicht bemerkt, dass eine Änderung dieses Schlüssels wohl erst nach einem TC-Neustart wirksam wird (Verzeichniswechsel reicht nicht), was zu meiner falschen Interpretation der Ergebnisse führte.