Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

VBA Aufruf von Certutil

Forumthread: VBA Aufruf von Certutil

VBA Aufruf von Certutil
31.12.2025 09:49:30
Joschi Witchcraft
Schönen guten Morgen am letzten Tag des Jahres 2025.

Um identische Files (auch mit anderem Namen) zu finden, ermittle ich zuerst alle Files und deren Größe. Danach wird die Liste nach Größe sortiert. Wird eine Größe mehrfach gefunden, dann könnte es sich um einen "Doppelgänger" handeln. Es können auch Files mit mehreren GB sein!

Mit Hilfe von "Certutil -hashfile" möchte ich nun den hashtag ermitteln.

Mein Problem: wie rufe ich diese Windows-Funktion auf, und wie erhalte ich das Ergebnis möglichst nicht über eine File?

Erfolgreich getestet im Eingabeaufforderung-Fenster: certutil -hashfile "C:\Users\Joschi\AppData\Local\Temp\Testfile.xyz" SHA256 > C:\Temp\Hashtag.txt

Wer kann helfen?

Gruß Joschi
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Aufruf von Certutil
31.12.2025 10:49:48
Eifeljoi 5
Hallo

Auch wenn es nicht ganz nach deinen Vorstellungen ist, dazu wird kein VBA benötigt, ich mache sowas nur noch mit PQ.
AW: VBA Aufruf von Certutil
31.12.2025 12:48:28
Daniel
schön für dich.
Du bist ein ganz toller.
AW: VBA Aufruf von Certutil
31.12.2025 11:22:57
Yal
Moin Joschi,

beim Websuchen nach "VBA Datei Hash" wird man schnell auf der Powershell-Befehl Get-FileHash, die man in VBA über WScript.Shell aufrufen kann.

Eine andere Möglichkeit, da es nur um die Gleichheit der Datei geht, wäre ein einfache Hash wie md5 zu verwenden, dass man leicht in VBA nachbauen kann:
https://www.herber.de/forum/archiv/1728to1732/1728364_HashWert_einer_Datei.html

VG
Yal
Anzeige
AW: VBA Aufruf von Certutil
31.12.2025 11:40:59
Joschi Witchcraft
Hallo Yal.

Eine Funktion für MD5 habe ich im Einsatz. Doch die hat mit sehr großen Dateien Probleme. Deshalb suche ich eine alternative Lösung.
AW: VBA Aufruf von Certutil
31.12.2025 11:25:48
volti
Hallo Joschi,

eine Idee dazu...
Sub MyTest()

Dim oData As New DataObject

CreateObject("WScript.Shell").Run "cmd.exe /C certutil -hashfile ""D:\Textdatei.txt"" SHA256 | clip", 0, True
With oData
.GetFromClipboard
Debug.Print oData.GetText(1)
End With
Set oData = Nothing
End Sub


Gruß KH
Anzeige
Die besseren Erfahrungen...
31.12.2025 13:29:28
Case
Moin Joschi, :-)

... habe ich mit PowerShell und "Get-FileHash" gemacht. ;-)
Im Moment mache ich es so, dass ich in PowerShell eine CSV-Datei erstellen lasse (könnte man auch direkt in Excel schreiben lassen, aber das möchte ich nicht). Die wird einmal in Power Query geladen. Dann brauche ich nur noch den VBA-Code starten und die CSV-Datei wird erstellt, die Abfrage aktualisiert. Vorteil - es werden nur neue Dateien eingelesen, schon vorhandene Dateien werden übergangen. ;-)

Klappt mit Sonderzeichen, Umlauten - auch japanische Zeichen - sieht dann so aus: ;-)

Userbild
Userbild
Userbild
Wenn du diesen Weg gehen willst, kann ich es mal zusammensuchen. Aber frühestens Morgen. ;-)

Servus
Case
Anzeige
AW: Die besseren Erfahrungen...
31.12.2025 15:04:31
Joschi Witchcraft
Herzlichen Dank an alle, die sich mit meinem Problem beschäftigt haben. Ich bin zufrieden.

Guten Rutsch ins Jahr 2026 und Gruß von Joschi
Hash in OneDrive
31.12.2025 14:05:34
Yal
Moin,

Vielleicht für Joschi nicht relevant, aber zum Thema ergänzend:
falls die Dateien in OneDrive gespeichert sind, haben diese de facto einen Hash, den man über dem MS Graph API lesen kann (REst Zugriff).
Dateien in OneDrive sind prinzipiell dedupliziert (also auf Speicher-Ebene, nicht auf Allocation-Ebene, aka "welche Datei in welchem Verzeichnis": da kann eine Datei in mehrere Verz vorkommen)

VG
Yal
Anzeige
AW: VBA Aufruf von Certutil
31.12.2025 11:33:34
snb
Sub M_snb()

MsgBox CreateObject("WScript.Shell").exec("cmd.exe /C certutil -hashfile ""D:\SNB_\OF\__alloc_snb.xlsx"" SHA256").stdout.readall
End Sub

AW: VBA Aufruf von Certutil
31.12.2025 11:46:17
Joschi Witchcraft
Hallo Volti.

mir fehlt wieder einmal die Erfahrung, wie ich Deinem Code einen Filenamen zur Verfügung stellen kann, in welchem auch Leerzeichen vorkommen.

Übergabe des Filenamen als Parameter. Und dann?????

Anzeige
AW: VBA Aufruf von Certutil
31.12.2025 12:00:46
volti
Nun,

in dem Code kannst Du doch Dateinamen mit Leerzeichen angeben. Die "" grenzen das doch so ein, so dass dies einen eigenen Parameter darstellt.
Gerne auch eine Alternative mit Extrazeile für Dateiname:
Sub MyTest()

Dim oData As New DataObject, sDatei As String

sDatei = Chr(34) & "D:\Textdatei mit Leer.txt" & Chr(34)

CreateObject("WScript.Shell").Run "cmd.exe /C certutil -hashfile " & sDatei & " SHA256 | clip", 0, True
With oData
.GetFromClipboard
Debug.Print oData.GetText(1)
End With
Set oData = Nothing
End Sub
Sub

Gruß Karl-Heinz

Und einen guten Rutsch wünsche ich noch Dir und allen anderen Formsteilnehmern hier.
Anzeige
AW: VBA Aufruf von Certutil
31.12.2025 12:08:38
volti
Hallo,

ergänzend mal SNBs Vorschlag, bei dem nur der Schlüssel extrahiert wird:
Sub MyTest()

Dim sDatei As String

sDatei = "D:\Textdatei mit Leer.txt"

Debug.Print Split(CreateObject("WScript.Shell").exec( _
"cmd.exe /C certutil -hashfile " & Chr(34) & sDatei & Chr(34) & " SHA256" _
).stdout.readall, vbCrLf)(1)
End Sub


Gruß KH
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18