Unten meine Lösung für eine jeweils beliebige, variable Anzahl von Hardlinks.
Die jeweils erste Datei eines Blocks muss existieren, bei den restlichen Dateien und Verzeichnissen ist das egal -
eventuell vorhandene Dateien dürfen nur nicht schreibgeschützt oder gesperrt sein, weil sie sonst nicht ersetzt werden.
Um auch schreibgeschützte zu ersetzen: dem "del"-Befehl den Parameter /F hinzufügen (in der Zeile vor FSUtil).
Features: (siehe auch readme.txt im Archiv)
- Vorhandene doppelte Dateien werden gelöscht und durch Hardlinks ersetzt
(soweit in der Datei hlscan.txt entsprechend aufgelistet; außer der jeweils ersten pro Block). - Nicht vorhandene Dateien werden als Hardlink angelegt (außer der jeweils ersten pro Block).
- Nicht vorhandene Verzeichnisse werden angelegt.
- Programm-Rückmeldungen können auf Fehlermeldungen beschränkt und in Datei umgeleitet werden (HLScan_HardLink.log):
Standardeinstellung lässt sich in der Batch ändern, alternativ Variablen vor dem Start auf der Kommandozeile setzen:- set boLogErrorsOnly=0
set boLogToFile=0
set boLogToDisplay=1
set fnHLScan=hlscan.txt
set fnHLLog=HLScan_HardLink.log
- set boLogErrorsOnly=0
- '%' in Dateinamen wird (noch) nicht unterstützt
- Eingabedatei "hlscan.txt" muss im aktuellen Verzeichnis liegen.
- Die jeweils erste Datei in einem Block dient als Quelle;
nachfolgend angegebene, ggf. vorhandene Dateien werden gelöscht und durch einen Hardlink auf die erste Datei im Block ersetzt. - Jede Zeile, die keine Pfadangabe ist, wird als Trennzeile interpretiert.
- In der Datei hlscan.txt kommen normalerweise keine doppelten Anführungszeichen vor.
Es dürfen auch manuell keine hinzugefügt werden, sonst droht vorzeitiger Abbruch der Batch. - Zur Ermittlung der benötigten Codeseiten wird ab V1.03 REG.EXE benötigt.
Die ist bei WinXP standardmäßig dabei, bei Win2k muss sie erst aus der SUPPORT.CAB der
Installations-CD zu Win2k entpackt werden. Wem die Datei fehlt, der findet über Google den Download über
Suchbegriff "reg.exe download"
- V1.01: Verarbeitung der führenden Leerzeichen in hlscan.txt hinzugefügt.
- V1.02: Stabilitätsverbesserung (auf bestimmten Rechnern Problem mit bestimmten Leerzeichen)
- V1.03: Sonderzeichen, mehrfache Leerzeichen, Umlaute, Groß-/Kleinschreibung
- V1.04: Ausgabeumleitungen und -filter hinzugefügt
HLScan_HardLink.cmd (getestet unter Win2k SP4; Benutzung auf eigene Gefahr):
- Download als Archiv mit readme.txt,
alternativ UUEncoded: siehe unten.
Code: Select all
begin 644 _HLScan_HardLink_104.rar
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
5VQ9H]I`,I<H,V/BR-G7$/7L`0`<`
`
end
sum -r/size 62335/4791
Ja, wenn die bestehenden Dateien schon verlinkt sind, bleiben Links beim Überschreiben normalerweise erhaltenErsten Testversuchen nach scheint es zu funktionieren
daß man quasi eine solche 3 x verlinkte Struktur
mit Verzeichnisbäumen und Leerdateien aufbauen kann.
Dann kopiert man einfach rüber, beantwortet die
"alle überschreiben" Frage mit ja und im Anschluß
sind automatisch auch alle Links aktualisiert.
(solange man kein Programm mit exotischer Speichermethode darauf loslässt, wie z.B. MS *ffice).
Wenn Du aus Platzgründen zuerst die Struktur mit NullByte-Dateien kopierst, erstellt die Batch oben die Links dazu.
Danach noch die "echten" Dateien kopieren, fertig (hoffentlich

Zur Analyse lässt sich die Ausgabe in eine Logdatei umleiten:
Code: Select all
HLScan_HardLink.cmd >HLScan_Hardlink.log 2>&1