Batch-Frage - Versionsnummer ermitteln und an den Dateinamen anhängen - geht das?

Petronius

Cadet 3rd Year
Registriert
Nov. 2012
Beiträge
33
Hallo Leute,

könnt Ihr mir eventuell bei folgendem Problem helfen:

Ich lade gelegentlich per Batchdatei diverse Dateien/Programme herunter, z.B. dieses kleine Tool, welches im Moment die Versionsnummer 1.21 hat (Vergleiche aktuell jeweils hier).

Besteht z.B. per "FINDSTR" oder anders eine einfache Möglichkeit, diese Versionsnummer
  • aus der Datei selbst oder
  • von der jeweiligen Internetseite
irgendwie herauszufiltern und in eine Variable einzulesen, damit man dann den Dateinamen in der Batchdatei (z.B. per "RENAME"-Befehl) automatisch um diese Versionsnummer ergänzen kann? Statt "Dateiname.zip" sollte dann am Ende also z.B. "Dateiname v1.21.zip" herauskommen. Da ich hier im Forum und auch im Internet leider keine weiteren für mich brauchbaren Hinweise gefunden habe, wende ich mich an Euch. Für Eure Mühe vielen Dank im Voraus.
 
Hallo Kraligor,

vielen Dank für Deinen Hinweis.
Kraligor schrieb:
Mit Regulären Ausdrücken sollte das machbar sein.
Leider stehe ich gerade ziemlich auf der Leitung. Worauf muss ich hier reguläre Ausdrücke anwenden, auf die Datei oder auf die Internetseite? Und womit - also mit welchen Befehlen?

Kann man alternativ nicht einfach mit irgendeinem Kommandozeilen-Tool den Text der oben verlinkten Internetseite in eine *.txt-Datei einlesen?
 
Ich hab von Batch keine große Ahnung.. aber ich würde folgendermaßen vorgehen:
Downloadseite parsen, die <TITLE>-Zeile extrahieren, daraus die Versionsnummer extrahieren (mittels Regulären Ausdrücken/Regex), und die dann an die heruntergeladene Datei anhängen.

EDIT: Ich kann es dir für Shell scripten, wenn dir das weiterhilft. ;)
 
Zuletzt bearbeitet:
Hallo Kraligor,
Kraligor schrieb:
... ich würde folgendermaßen vorgehen: Downloadseite parsen
genau das ist mein Problem - wie geht das denn? Aber mit "parsen" hast Du mir das richtige Stich- bzw. Suchwort an die Hand gegeben. Nach kurzer Suche im Web ergab sich dann, dass dies z.B. mit cURL geht.
Code:
curl.exe -o "Einzulesende Textseite.txt" "http://softwareok.de/?Microsoft/Run-Command"
Dein Tipp für das weitere Vorgehen ...
Kraligor schrieb:
... die <TITLE>-Zeile extrahieren, daraus die Versionsnummer extrahieren ...
... war sehr hilfreich. Dies habe ich mit Hilfe von zwei FOR-Schleifen erreicht und die Versionsnummer anhand der Position (Zeichen 21 bis Zeichen 24) aus der <TITLE>-Zeile herauskopiert.
Code:
    rem Herausfiltern der <TITLE>-Zeile
    for /f "usebackq delims=" %%i IN (`type "Einzulesende Textseite.txt"^|findstr /c:"<TITLE>Run-Command"`) do echo %%i>>"%hilfsdatei%"
    rem Herausfiltern der Versionsnummer aus  der <TITLE>-Zeile
    for /f "usebackq delims=" %%i in ("%hilfsdatei%") do ( 
    set "Zeile=%%i"
    >>"%hilfsdatei2%" echo !Zeile:~21,4!)
    for /f "usebackq delims=" %%i in ("%hilfsdatei2%") do ( 
    set "Versionsnummer=%%i")
    echo Die Versionsnummer lautet %Versionsnummer%.
Für Deine Hilfe vielen, vielen Dank. :)

Das mit der Position anhand der Zeichennummern klappt natürlich nur, solange sich die Form der Versionsnummer (= genau 4 Zeichen) nicht ändert. Könnte man das Problem mit regulären Ausdrücken umgehen?

Vielleicht hast Du gelegentlich ja mal Zeit und könntest das am Beispiel dieser <TITLE>-Zeile kurz darstellen:
<TITLE>Run-Command 1.21 Alternative zum Ausführen Dialog von Windows</TITLE>
 
Wie sieht es aus, wenn Du Zeile 4-8 nur damit ersetzt?
Code:
for /f "usebackq tokens=2 delims= " %%i in ("%hilfsdatei%") do (set Versionsnummer=%%i)

damit sollte dann egal sein, wieviele Zeichen die Versionsnummer hat.
Leerzeichen am Anfang der Zeile werden ignoriert und die Versionsnummer ist dann das, was zwischen dem dann folgenden 2ten und 3ten Leerzeichen steht, also der 2te Textblock oder das 2te "Wort".
 
HDScratcher schrieb:
Wie sieht es aus, wenn Du Zeile 4-8 nur damit ersetzt?
Code:
for /f "usebackq tokens=2 delims= " %%i in ("%hilfsdatei%") do (set Versionsnummer=%%i)

Hallo HDScratcher,

eben erfolgreich ausprobiert - das ist ja ein Klasse-Tipp. Zum Testen habe ich auch die Stellenanzahl der Versionsnummer variiert. Deine Befehlszeile erkennt die Versionsnummer jedesmal korrekt.

Nochmals vielen, lieben Dank. Da wäre ich von allein nie drauf gekommen. :)
 
Zurück
Oben