Ihre Datei verwendet ein Format mit fester Breite, sodass Sie immer an Position 21 mit dem Sortieren beginnen möchten.
Der SORT
Befehl bietet eine Option, um jeden Zeilenvergleich an einer bestimmten Position in der Zeile durchzuführen. Das einzige Manko ist, dass es keinen Mechanismus gibt, um den Header-Datensatz an der Spitze zu halten.
Der Trick besteht also darin SET /P
, die erste Zeile zu lesen und in eine neue Datei zu schreiben. Dann MORE +1
lesen Sie alle bis auf die 1. Zeile SORT \+21
und leiten diese an die neue Datei. Als letztes müssen Sie die Originaldatei mit der neuen Datei mit überschreiben MOVE
.
@echo off setlocal enableDelayedExpansion set "file=test.txt" set /p "ln=" < "%file%" >"%file%.new" ( echo(!ln! more +1 "%file%" | sort /+21 ) move /y "%file%.new" "%file%" >nul
Diese Strategie unterliegt Einschränkungen:
- MORE wird hängen, wenn die Datei Zeilen mit mehr als 64 KB überschreitet
- MORE konvertiert Tabulatoren in Leerzeichen
- Die Kopfzeile darf aufgrund von SET / P-Einschränkungen nicht länger als 1021 Zeichen sein.
Alternativ können Sie mein JSORT.BAT-Dienstprogramm verwenden, um die Sortierung mit einem einfachen Befehl einfach und effizient auszuführen. Der MOVE ist noch erforderlich.
@echo off call test.txt /p 21 /s 1 /o test.txt.new move /y test.txt.new test.txt >nul
JSORT ist ein reines Skript (Hybrid-JScript / Batch), das nativ auf jedem Windows-Computer ab XP ausgeführt wird. Es wird keine Drittanbieter-Exe-Datei benötigt.
Beachten Sie, dass JSORT im Gegensatz zu dem integrierten Befehl SORT standardmäßig eine Groß- und Kleinschreibung verwendet. Kein Problem mit Ihrem Beispieltext, aber wenn Sie Groß- und Kleinschreibung ignorieren möchten, fügen Sie die /I
Option einfach an .
JSORT hat eine Größenbeschränkung aufgrund der Tatsache, dass die gesamte Datei in eine einzige Zeichenfolgenvariable im Speicher passen muss. Ich bin nicht sicher über den genauen Wert, aber ich glaube, dass die maximal unterstützte Dateigröße etwas weniger als 1 GB beträgt.
Lesen Sie die integrierte Hilfe, um weitere nützliche Funktionen kennenzulernen, die JSORT unterstützt.
- Eingebettete Zahlen als Zahlen statt Text sortieren
- Sortiert nach einem begrenzten Token anstelle einer festen Position
- Erhalten Sie nur eindeutige Zeilen
- Begrenzen Sie die Anzahl der Ausgabezeilen