Wenn ich ein Verzeichnis vollen Textdateien wieBatch: Return Dateiname mit dem höchsten integer
01.text.sql
02text.sql
3text.sql
wie würde ich den Namen der Datei mit der höchsten ganzen Zahl zurückgeben z.B. 3.text.sql? Wie Sie sehen können, wird den Zahlen möglicherweise kein 0 vorangestellt und möglicherweise fehlt a. nach der Ganzzahl. Ich weiß, dass ich eine Schleife durch das Verzeichnis mit etwas wie diese
Choose Highest Numbered File - Batch File
dies jedoch nicht berücksichtigt unterschiedliche Dateinamen-Formate übernimmt. Gibt es eine Möglichkeit, wie ein Batch-Skript ein Verzeichnis durchlaufen kann und automatisch die Datei mit der höchsten Ganzzahl zieht oder muss ich die Dateinamen speichern und sie in einer separaten Schleife miteinander vergleichen?
Zur Zeit habe ich so etwas wie diese, aber es gibt 3text statt nur 3
SETLOCAL enabledelayedexpansion
SET max=0
FOR %%x in (*.sql) DO (
SET "FN=%%~nx"
SET "FN=!FN:*-=!"
IF !FN! GTR !max! SET max=!FN!
)
ECHO Highest script number is %max%
Aktualisiert Schleife:
SETLOCAL enabledelayedexpansion
SET scriptmax=0
FOR %%x in (*.sql) DO (
SET "FN=%%~nx"
SET a=1000!FN!
SET /A FN=a %% 1000
IF !FN! GTR !max! SET max=!FN!
)
bis zu 999. für etwas arbeiten, wenn Sie die vorher vorane Ziffer abspalten '1' statt Subtraktion '100' dann brauchen Sie nicht, wie viele Stellen zu wissen, dass es sind insgesamt ... – aschipfl
@aschipl: wie? Ich habe versucht, einen Weg zu finden, aber% a: ~ 1% lässt mich wieder mit 09? – ths
Verbleibende führende Nullen könnten mit diesem entfernt werden: 'for/F" Token = * delims = 0 "%% Z in ("% FN: ~ 1% ") setze" FN = %% Z "& setze/A" FN + = 0 "'; aber es scheint, dass Sie in der Zwischenzeit eine noch einfachere Lösung gefunden haben ... – aschipfl