Hallo zusammen,
gar nicht so leicht, einen vernünftigen Betreff für mein Anliegen zu formulieren ... also:
Ich habe in einem einzigen Ordner etliche Dateipaare nach diesem Schema:
apfel.txt
apfel.en.txt
birne.txt
birne.en.txt
zitrone.txt
zitrone.en.txt
Der Dateiname in einem Paar ist immer gleich, nur die doppelte Endung unterscheidet die Dateien eines Paares.
Ich möchte nun filtern auf Paare, bei denen die zweite Datei - also die mit der Doppelendung en.txt - älter ist als ihre Schwester mit der einfachen Endung. Eine farbige Hervorhebung würde es auch tun - ich möchte diese Dateien nur sehr schnell auffinden können.
Gibt es einen Weg?
Vielen Dank und Gruß
Failix
Dateipaare filtern auf: zweite Datei älter
Moderators: Hacker, Stefan2, white
Re: Dateipaare filtern auf: zweite Datei älter
Sehr schade, dass bisher keine Antworten gekommen sind. Ich nehme an, dass es nicht wirklich eine Lösung für mein Anliegen gibt.
Nun habe ich mir einen Workaround erstellt, bei dem Beyond Compare zum Einsatz kommt. Mein Ziel erreiche ich damit, muss allerdings vorher eine Kopier- und eine Umbennen-Aktion machen.
Falls also doch noch jemand einen Geistesblitz hat, würde ich mich sehr über einen Beitrag freuen, danke!
Gruß
Failix
Nun habe ich mir einen Workaround erstellt, bei dem Beyond Compare zum Einsatz kommt. Mein Ziel erreiche ich damit, muss allerdings vorher eine Kopier- und eine Umbennen-Aktion machen.
Falls also doch noch jemand einen Geistesblitz hat, würde ich mich sehr über einen Beitrag freuen, danke!
Gruß
Failix
Re: Dateipaare filtern auf: zweite Datei älter
Hi Failix.
Du könntest dir ein Skript schreiben (VBS/JS/AutoHotkey/PowerShell/...)
welches alle Dateien eines Ordners einliest, den Namen und den Timestamp überprüft,
und das Ergebnis (passende/gewünschte Dateinamen) als Textdatei speichert.
Psuedo-code:
- Den Code speichern als xxx.vbs im TC-Ordner
- Button erstellen:
--------------------------------------
Kommando: xxx.vbs
Parameter:
Startpfad:
Icondatei: C:\windows\System32\WScript.exe
Tooltip : Was macht dieser Button
--------------------------------------
- in den gewünschten Ordner wechseln
- den Button anklicken
'' ############# TEST
''' Bei einem TestOrdner mit:
'apfel.en.txt 0 10.02.2019 14:01 -a--
'Schnitzel.en.txt 0 11.02.2019 14:01 -a--
'apfel.txt 0 13.02.2019 14:01-a--
'Schnitzel.txt 0 13.02.2019 14:01 -a--
'birne.txt 0 13.02.2019 14:01 -a--
'birne.en.txt 0 13.02.2019 14:01 -a--
'zitrone.txt 0 13.02.2019 14:01 -a--
'zitrone.en.txt 0 20.02.2019 14:01 -a--
'Erhalte ich diese Meldung:
'---------------------------
'apfel.txt
'apfel.en.txt
'Schnitzel.txt
'Schnitzel.en.txt
'---------------------------
'OK
'---------------------------
Dies müsste man jetzt noch in eine temporäre Datei schreiben oder in die ZwiAb legen,
dann könnte man die internen Befehle des TCs verwenden, um diese Dateinamen zu markieren / auszuwählen.
cm_LoadSelectionFromFile / cm_LoadSelectionFromClip
cm_ShowOnlySelected
Diese Textdatei verwendest du dann zB für cm_LoadSelectionFromFile=2032;Read file selection from file
Oder das Ganze über cm_LoadSelectionFromClip=2033;Read file selection from clipboard
Zusätzlich kannst du danach noch einen weiteren internen Befehl anwenden: cm_ShowOnlySelected=2023;Hide files which aren't selected
Du könntest dir ein Skript schreiben (VBS/JS/AutoHotkey/PowerShell/...)
welches alle Dateien eines Ordners einliest, den Namen und den Timestamp überprüft,
und das Ergebnis (passende/gewünschte Dateinamen) als Textdatei speichert.
Psuedo-code:
Code: Select all
For Each xxx.txt
- IF exist xxx.en.txt
- - IF xxx.en.txt-timestamp -lt xxx.txt-timestamp
- - - vOUT += xxx.txt + CRLF + xxx.en.txt + CRLF
Next
Write __Result.txt vOUT
Hier mal ein VBScript
- Den Code speichern als xxx.vbs im TC-Ordner
- Button erstellen:
--------------------------------------
Kommando: xxx.vbs
Parameter:
Startpfad:
Icondatei: C:\windows\System32\WScript.exe
Tooltip : Was macht dieser Button
--------------------------------------
- in den gewünschten Ordner wechseln
- den Button anklicken
Code: Select all
'VBS für TotalCommander, Stefan, v001, 2019-02-13
'https://ghisler.ch/board/viewtopic.php?p=351548#p351548
'Dateipaare filtern auf: zweite Datei älter
'
' --------------------------------------------
' USER SETTINGS:
'''' Das Pattern anpassen (wie unterscheiden sich die beiden Dateien voneinander)
'Beispiel: apfel.txt
' Buddy : apfel.en.txt
strPattern = ".en"
' --------------------------------------------
' THE CODE:
SET FSO = CreateObject("Scripting.FileSystemObject")
strCurrWorkDir = FSO.GetFolder(".")
Set objFolder = FSO.GetFolder(strCurrWorkDir)
Set colFiles = objFolder.Files
For Each objFile in colFiles
sName = FSO.GetFileName(objFile)
sBase = FSO.GetBaseName(objFile)
sExte = FSO.GetExtensionName(objFile)
sCreated = objFile.DateCreated
sAccessed = objFile.DateLastAccessed
sModified = objFile.DateLastModified
If (UCase(sExte) = "TXT") THEN
If Not InStr(sBase,strPattern) THEN
sBuddy = sBase + strPattern + "." + sExte
If FSO.FileExists(sBuddy) THEN
Set oBuddy = FSO.GetFile(sBuddy)
sBuddyCreated = oBuddy.DateCreated
sBuddyAccessed = oBuddy.DateLastAccessed
sBuddyModified = oBuddy.DateLastModified
''''
intDateDiff = DateDiff("s", sModified, sBuddyModified)
If (intDateDiff < 0) THEN
'msgbox "Buddy is older: " & sName
strOut = strOut & sName & vbCRLF & sBuddy & vbCRLF
End If
''''
End If
End If
End If
Next
MsgBox strOut
' --------------------------------------------
'ToDo: write strOut to a file
'Diese Textdatei verwendest du dann zB für cm_LoadSelectionFromFile=2032;Read file selection from file
'Zusätzlich weiteren internen Befehl anwenden: cm_ShowOnlySelected=2023;Hide files which aren't selected
' --------------------------------------------
'' ############# TEST
''' Bei einem TestOrdner mit:
'apfel.en.txt 0 10.02.2019 14:01 -a--
'Schnitzel.en.txt 0 11.02.2019 14:01 -a--
'apfel.txt 0 13.02.2019 14:01-a--
'Schnitzel.txt 0 13.02.2019 14:01 -a--
'birne.txt 0 13.02.2019 14:01 -a--
'birne.en.txt 0 13.02.2019 14:01 -a--
'zitrone.txt 0 13.02.2019 14:01 -a--
'zitrone.en.txt 0 20.02.2019 14:01 -a--
'Erhalte ich diese Meldung:
'---------------------------
'apfel.txt
'apfel.en.txt
'Schnitzel.txt
'Schnitzel.en.txt
'---------------------------
'OK
'---------------------------
Dies müsste man jetzt noch in eine temporäre Datei schreiben oder in die ZwiAb legen,
dann könnte man die internen Befehle des TCs verwenden, um diese Dateinamen zu markieren / auszuwählen.
cm_LoadSelectionFromFile / cm_LoadSelectionFromClip
cm_ShowOnlySelected
Diese Textdatei verwendest du dann zB für cm_LoadSelectionFromFile=2032;Read file selection from file
Oder das Ganze über cm_LoadSelectionFromClip=2033;Read file selection from clipboard
Zusätzlich kannst du danach noch einen weiteren internen Befehl anwenden: cm_ShowOnlySelected=2023;Hide files which aren't selected
Re: Dateipaare filtern auf: zweite Datei älter
Hallo Stefan,
ich bin leider völlig außerstande, Scripte selbst zu schreiben - so setze ich für verschiedenen Anwendungen nur vorgefertigte Scripte ein, bei denen ich bestenfalls mal ein paar Variablen ändern muss.
Aber wenn es auf Programmierung hinausläuft, dann kann ich einen Kollegen darum bitten. Die Überprüfung muss ja nicht unbedingt in TC stattfinden - Hauptsache ist, dass ich ein Resultat bekomme.
Danke und Gruß
Failix
ich bin leider völlig außerstande, Scripte selbst zu schreiben - so setze ich für verschiedenen Anwendungen nur vorgefertigte Scripte ein, bei denen ich bestenfalls mal ein paar Variablen ändern muss.
Aber wenn es auf Programmierung hinausläuft, dann kann ich einen Kollegen darum bitten. Die Überprüfung muss ja nicht unbedingt in TC stattfinden - Hauptsache ist, dass ich ein Resultat bekomme.
Danke und Gruß
Failix
Re: Dateipaare filtern auf: zweite Datei älter
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
Re: Dateipaare filtern auf: zweite Datei älter
Hallo Roman,
danke für den Tipp - aber ich hätte es wohl nicht wirklich hinbekommen. Mein Kollege hat es bereits mit PHP gelöst (die Dateien liegen auf einem Apache-Server), das funktioniert wunderbar. Da habe ich den Abgleich halt im Browser statt im TC, das spielt keine Rolle.
Gruß
Failix
danke für den Tipp - aber ich hätte es wohl nicht wirklich hinbekommen. Mein Kollege hat es bereits mit PHP gelöst (die Dateien liegen auf einem Apache-Server), das funktioniert wunderbar. Da habe ich den Abgleich halt im Browser statt im TC, das spielt keine Rolle.
Gruß
Failix