Er nimmt alle Dateien in einem Ordner und ändert den Hash.
Nö. Alles, was der Batchcode macht, ist an alle Objekte (Dateien+Verzeichnisse+Links+Junctions) im angegebenen Ort %1 den zweiten Parameter %2 (inkl. folgendem Leerzeichen) anzuhängen. Da sich dadurch der Inhalt der Dateien ändert, ist hinterher der Hash jeweils ein anderer. Gerade bei Archiven kann das aber dazu führen, dass sie kaputtgemacht werden, sich nicht mehr entpacken lassen; dann kommt es auf den Archivierer an, wie fehlertolerant der ist.
Damit ist aber trotzdem weiter unklar, mit welchen Parametern genau diese Batch gerufen wird. Davon abgesehen kann man Batches auch von einem Delphi-Programm aus aufrufen - Stichwort
ShellExecuteEx.
Die Fragestellung bzw. welches Ziel eigentlich erreicht werden soll, ist zumindest mir immer noch unklar.
Grüße
Dalai