Wählen Sie die höchste nummerierte Datei - Batch-Datei

8

Ich habe ein Verzeichnis voller .jar-Dateien, die progressiv wie folgt benannt sind:

%Vor%

Ich versuche die Datei mit der höchsten Nummer auszuwählen. Gibt es einen wirklich einfachen Weg? Weil das Ausführen von .\version*.jar einen Fehler verursacht, vermutlich aufgrund der mehreren Dateien?

    
Dangercrow 25.07.2012, 08:03
quelle

2 Antworten

11

Wir brauchen eine verzögerte Erweiterung

%Vor%

Nur eine Variable für das Maximum:

%Vor%

Dann iteriere über die Dateien:

%Vor%

Wir brauchen den Dateinamen ohne Erweiterung

%Vor%

Und entfernen Sie die version- von Anfang an:

%Vor%

Jetzt sollte FN nur die Nummer enthalten und wir können vergleichen:

%Vor%

Und wir sind fertig:

%Vor%

Die vollständige Stapeldatei:

%Vor%     
Joey 25.07.2012, 08:09
quelle
3

Hier ist eine etwas einfachere Version als Joey's Code.

%Vor%

Dieser Code funktioniert auch dann, wenn die Versionsnummern Null vorangestellt sind, solange die Versionsnummer niemals 0 (null) ist. Das Angeben von Tokens = 1 * mit 0 als Trennzeichen bewirkt, dass führende Nullen von der Versionsnummer entfernt werden, während alle Nullen nach der ersten Ziffer ungleich Null beibehalten werden.

Es gibt eine einfachere Lösung, wenn alle Versionen mit einer konstanten Breite vorangestellt sind. Aber diese Lösung funktioniert sowohl mit als auch ohne Präfix Null.

Joey's Code wird fehlschlagen, wenn führende Nullen vorhanden sind, weil dies eine oktale Notation anzeigt. Ungültige Oktalziffern mit führenden Nullen werden als Strings behandelt, wodurch der Vergleich das falsche Ergebnis liefert. Dies ist wahrscheinlich kein Problem, da die ursprüngliche Frage voraussetzt, dass führende Nullen nicht vorhanden sind. Aber Vorsicht ist besser als Nachsicht.

    
dbenham 25.07.2012 15:25
quelle

Tags und Links