Dateipaare filtern auf: zweite Datei älter

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
Failix
Junior Member
Junior Member
Posts: 33
Joined: 2018-02-28, 17:26 UTC

Dateipaare filtern auf: zweite Datei älter

Post by *Failix »

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
Failix
Junior Member
Junior Member
Posts: 33
Joined: 2018-02-28, 17:26 UTC

Re: Dateipaare filtern auf: zweite Datei älter

Post by *Failix »

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
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Dateipaare filtern auf: zweite Datei älter

Post by *Stefan2 »

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:

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



 
Failix
Junior Member
Junior Member
Posts: 33
Joined: 2018-02-28, 17:26 UTC

Re: Dateipaare filtern auf: zweite Datei älter

Post by *Failix »

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
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Re: Dateipaare filtern auf: zweite Datei älter

Post by *Hacker »

Failix,
Mit WinScript Advanced und z.B. AutoHotkey wäre das ganz leicht zu realisieren.

Roman
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.
Failix
Junior Member
Junior Member
Posts: 33
Joined: 2018-02-28, 17:26 UTC

Re: Dateipaare filtern auf: zweite Datei älter

Post by *Failix »

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
Post Reply