Perfekt! Danke.
(so langsam lichtet sich das Dunkel von regulären Ausdrücken. Es scheint bereits ne Kerze im Nebel)
Beiträge von Hakeem
-
-
Danke schonmal.
Puh, das ist echt nicht meine normale Baustelle.Wenn ich das jetzt richtig nachgeschlagen habe prüft deine RegExp den String auf alle Zeichen die im Set ([ ]) enthalten sind und meldet mit 1 oder 0 das Ergebnis. Wobei 0 wohl bedeutet es gibt weitere Zeichen?!
Das Set besteht aus
"\w" = a-z, A-Z ,0-9 oder Unterstrich (_)
und "-"Und dank "+" läuft es mindestens einmal durch und zwar von Zeilenbeginn "^" bis zum Zeilenende "$".
Habe ich das korrekt verstanden oder kannst du das noch ergänzen bzw. korrigieren. Ich frage mich auch ob man bei einem einfachen String "^" und "$" braucht.
Grüße!
-
Hallo!
Eigentlich ist das Problem schon gelöst, da man es einfach anders machen kann. Dennoch interessiert mich die urspüngliche Frage und ich bin neugierig ob es eine Lösung gibt.
Das Script fragt verschiedene Parameter ab, die verarbeitet werden. Unter anderem soll der Benutzer einen Speicherpfad via "FileSelectFolder" wählen und in einer "InputBox" den Namen angeben unter dem gespeichert werden soll.
Problem: Den Zeichenraum eingrenzen um verbotene Zeichen im Dateinamen auszuschließen also z.B. /+'"\ usw.
schwache Lösung: If StringIsAlNum -> ok , sonst wird die Eingabe nicht angenommen und der vorige Standardwert bleibt erhalten.warum schwach: weil damit auch keine Dateinamen mit "_" oder "-" möglich sind.
Workaround: Pfad und Dateiname mit "FileSaveDialog" abfragen und die Elemente z.B. per "_PathSplit" extrahieren. Das gute daran, es löst auch gleich das Problem, dass per "FileSelectFolder" auch sinnfreie Ergebnisse wie "Computer" möglich sind wenn das root dir nicht sehr eng begrenzt wird, was weitere Fehlerbehandlung nötig macht.
Nun meine Frage: Wie kann ich eine beliebige Eingabe möglichst kurz und knackig auf gültige Zeichen z.B. für Dateinamen prüfen, um dem Nutzer zu sagen dass Zeichen x ungültig ist und es neu versucht werden soll. Also etwas in der Art 'StringIsAlNum or "_" or "-"' Ohne gleich eine 2-Seitige RegEx schreiben zu müssen, da bin ich nämlich schlecht drin. Gibt es eine UDF?
AFAIK gibt es in php fertige Funktionen um Eingaben zu maskieren und den gefährlichen Zeichensatz zu Filtern.Vielen Dank für´s lesen und noch mehr Dank für Antworten.
-
In der Zwischenzeit hatte ich meinen vorherigen Post editiert.
Mit fett meinte ich nicht die Anzahl Codezeilen sondern die Rechenschritte währen der Ausführung.
Für heute mach ich erst mal Schluss.
Danke für deine Hilfe. Hoffe die nächsten Tage wieder Zeit zu finden um weiter zu basteln und die "fünf Zeilen" zu erdenken...Edit:
Konnte es doch nicht lassenAlso dein StringRegExp funktioniert - richtig angewendet - schon.
[autoit]
Bekomme jetzt mit
[/autoit]
$a_Prozent = StringRegExp($sErrOutput, "(\d{1,3})%",3)
If IsArray($a_Prozent) Then
$i_Prozent = $a_Prozent[UBound($a_Prozent)-1]
Else
$i_Prozent = ""
EndIfpro Runde die letzte übermittelte Zahl. Das ist genau genug.
Nur die anderen Meldungen von wget hätte ich eben auch gerne. Also wenn keine neuere Datei auf dem Server liegt usw.Noch jemand ne Idee, wie ich daran komme? Etwa über eine weitere Prüfung nach predefinierten Strings :wacko:
-
Ist lange her, dass ich RegEx ansatzweise kapiert habe. Inzwischen habe ich das komplett vergessen.
Der von Dir vorgeschlagene Test setzt @error auf 1 und liefert keine Ergebnisse...Für diesen Ansatz würde ich noch recht viel und detaillierte Hilfe brauchen...
Ich fürchte auch, dass es das Skript sehr "fett" macht, wenn ich den Stream ständig mit StringRegExp behandle und dann das Array verarbeite.
Eventuell ist ein anderer Ansatz hier sparsamer...
Edit:
die Querlaufende Bar sieht, wenn man den Inhalt des Edits in den Texteditor kopiert, so aus:
Spoiler anzeigen
Code
Alles anzeigen--2014-05-11 22:35:40-- http://www.speedtest.qsc.de/10MB.qsc Resolving www.speedtest.qsc.de... 195.90.7.115 Connecting to www.speedtest.qsc.de|195.90.7.115|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 10485760 (10M) Saving to: `10MB.qsc' 0% [ ] 0 --.-K/s 4% [> ] 467,145 2.21M/s 10% [==> ] 1,051,813 2.48M/s 16% [=====> ] 1,692,037 2.67M/s 22% [=======> ] 2,326,293 2.75M/s 28% [=========> ] 2,957,077 2.80M/s 33% [============> ] 3,505,941 2.77M/s 39% [==============> ] 4,185,877 2.83M/s 46% [================> ] 4,824,853 2.86M/s 51% [===================> ] 5,393,573 2.84M/s 57% [=====================> ] 6,004,501 2.85M/s 63% [=======================> ] 6,676,245 2.88M/s 69% [==========================> ] 7,303,557 2.89M/s 76% [============================> ] 7,986,965 2.91M/s 82% [===============================> ] 8,625,941 2.92M/s 88% [=================================> ] 9,245,061 2.92M/s eta 0s 94% [===================================> ] 9,867,653 2.96M/s eta 0s 100%[======================================>] 10,485,760 2.98M/s in 3.4s
Man müsste also nur schaffen, dass die Zeile im Edit an der richtigen Stelle umbricht. Den @CRLF scheint das Edit ja zu empfangen, sonst würd ein c&p in den Editor das nicht so umbrechen - oder?
-
Hi James,
danke für deine Antwort.
Wie lese ich denn den Stderr Zeilenweise aus?
Pro While Runde liest er immer nur einen Teil einer Zeile...Meintest du vielleicht ich soll pro Runde nach xxx% suchen?
-
Hey Leute,
ich hoffe der Titel ist nicht allzu daneben. Mir ist leider kein besserer eingefallen.
Ich habe ein Programm, dass an einer Stelle mit Hilfe von wget.exe Datei(en) herunterlädt.Aus kosmetischen (CMD Window nicht so "hübsch") und praktischen Gründen (wenn es keine neuere Datei gibt, ist das CMD so schnell wieder geschlossen, dass man nicht checkt was geht) lasse ich den Output in der GUI anzeigen.
In der Kommandozeile sieht das bei wget so aus:
Spoiler anzeigen
Code--2014-05-11 20:10:07-- http://www.speedtest.qsc.de/100MB.qsc Resolving www.speedtest.qsc.de... 195.90.7.115 Connecting to www.speedtest.qsc.de|195.90.7.115|:80... connected. HTTP request sent, awaiting response... 200 OKLength: 104857600 (100M)Saving to: `100MB.qsc' 100%[======================================>] 104,857,600 3.07M/s in 34s 2014-05-11 20:10:41 (2.95 MB/s) - `100MB.qsc' saved [104857600/104857600]
Im StderrRead (das Programm schreibt Messages nicht zu Stdout sondern zu Stderr) sieht es hingegen so aus
Spoiler anzeigen
Code
Alles anzeigen. . . . 9700K .......... .......... .......... .......... .......... 95% 3.15M 0s 9750K .......... .......... .......... .......... .......... 95% 2.41M 0s 9800K .......... .......... .......... .......... .......... 96% 2.34M 0s 9850K .......... .......... .......... .......... .......... 96% 1.42M 0s 9900K .......... .......... .......... .......... .......... 97% 1.89M 0s 9950K .......... .......... .......... .......... .......... 97% 2.29M 0s 10000K .......... .......... .......... .......... .......... 98% 2.11M 0s 10050K .......... .......... .......... .......... .......... 98% 2.51M 0s 10100K .......... .......... .......... .......... .......... 99% 2.61M 0s 10150K .......... .......... .......... .......... .......... 99% 1.93M 0s 10200K .......... .......... .......... .......... 100% 2.55M=4.7s 2014-05-11 20:12:59 (2.14 MB/s) - `10MB.qsc' saved [10485760/10485760]
Dadurch musste ich schon das Limit der EditControl anpassen. Ein bar- Progress wie im Original wäre mir aber lieber.
Das Handbuch sagt dazu:
‘--progress=type’
Select the type of the progress indicator you wish to use. Legal indicators are “dot” and “bar”.
The “bar” indicator is used by default. It draws an ASCII progress bar graphics (a.k.a “thermometer” display) indicating the status of retrieval. If the output is not a TTY, the “dot” bar will be used by default.
Use ‘--progress=dot’ to switch to the “dot” display. It traces the retrieval by printing dots on the screen, each dot representing a fixed amount of downloaded data.
When using the dotted retrieval, you may also set the style by specifying the type as ‘dot:style’. Different styles assign different meaning to one dot. With the default style each dot represents 1K, there are ten dots in a cluster and 50 dots in a line. The binary style has a more “computer”-like orientation—8K dots, 16-dots clusters and 48 dots per line (which makes for 384K lines). The mega style is suitable for downloading large files—each dot represents 64K retrieved, there are eight dots in a cluster, and 48 dots on each line (so each line contains 3M). If mega is not enough then you can use the giga style—each dot represents 1M retrieved, there are eight dots in a cluster, and 32 dots on each line (so each line contains 32M).
Note that you can set the default style using the progress command in .wgetrc. That setting may be overridden from the command line. The exception is that, when the output is not a TTY, the “dot” progress will be favored over “bar”. To force the bar output, use ‘--progress=bar:force’.Also --progress=bar:force
So weit so gut...
aber
dann schreibt es die Bar sehr weit in die Breite und dann irgendwann in der nächsten Zeile fortIch weiß (noch) nicht, wie ich die Punkte verwenden könnte um eine GUI-Progress-Bar darzustellen. Das würde aber auch nur bedingt weiterhelfen, da mir dann Meldungen wie "saved" "fully retrieved" oder "not newer nothing to do" entgehen. Ausserdem würde das dann massiven Einsatz von StringInString oder StringRegEx bedürfen und da bin ich gerade nicht fit genug drin.
Hat noch jemand eine Idee oder einen Tipp?
P.S. Hier der Quellcode für die Passage
Spoiler anzeigen
[autoit]#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ColorConstantS.au3>
#include <Constants.au3>
GuiCreate("STDIO Window", 425, 322,(@DesktopWidth-425)/2, (@DesktopHeight-362)/2 , $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
$cID_Output = GuiCtrlCreateEdit("", 0, 10, 423, 260, BitOR($ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY))
GUICtrlSetLimit(-1, 0xF423F)
GUICtrlSetBkColor(-1, $COLOR_Black)
GUICtrlSetColor(-1, $COLOR_WHITE)
_readTest()
Sleep(10000)Func _readTest()
[/autoit]
Local $iPID = Run(@ComSpec & " /c .\wget.exe --progress=bar:force -N -c http://www.speedtest.qsc.de/10MB.qsc", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $sOutput = ""
While 1
$sErrOutput = StderrRead($iPID)
If @error Then ; Exit the loop if the process closes or StderrRead returns an error.
ExitLoop
EndIf
GUICtrlSetData($cID_Output, $sErrOutput, 1)
WEnd
EndFunc -
Vielen Dank!
-
Danke für deine Antwort.
Jetzt sehe ich auch, dass ich vorhin viel zu kurz nur auf die Zeile geschaut habe die als erstes unklar war.Also wenn ich das richtig interpretiere (siehe Kommentare):
[autoit]
[/autoit]
GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
; (...)
Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam) #cs $WM_DROPFILES übergibt als 'ersten Nachrichtenpparameter' _
an die Funktion die Namen der Dateien, die gedroppt wurden und zwar in einer "structure" _
die "structue" wird als Hexadezimalwert referenziert und nach $wParam übergeben. #ce
;(...)
Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', _
'hwnd', $wParam, _ #cs 'hDrop' "Identifier of the structure that contains the file names of the dropped files." _
ALSO: eigentlich der einzige übergebene Parameter und HIER zusammen mit dem nächsten der einzige wichtige #ce
'int', 0xFFFFFFFF, _ #cs 'iFile' "Index of the file to query. If the value of this parameter is 0xFFFFFFFF, _
DragQueryFile returns a count of the files dropped. If the value of this parameter is between zero _
and the total number of files dropped, DragQueryFile copies the file name with the corresponding value _
to the buffer pointed to by the lpszFile parameter." (Nullbasiert!) Also wird hier erstmal nur abgefragt, _
wieviele Dateien übergeben wurden #ce
'ptr', 0, _ #cs 'lpszFile' "The address of a buffer that receives the file name of a dropped file _
when the function returns. This file name is a null-terminated string. _
if this parameter is NULL, DragQueryFile returns the required size, in characters, of this buffer." _
ALSO: im Prinzip an dieser Stelle erstmal unwichtig #ce
'int', 255) #cs 'cch' "The size, in characters, of the 'lpszFile' buffer." ALSO: hier unwichtig, daher egal ob 0 oder 255 _
Vermutlich ist 0 erstmal besser, da es etwas Speicher schont... wahrscheinlich wird es HIER aber gar nicht ausgewertet #ce
; Richtig spannend wird es wohl erst ab hier:
For $i = 0 To $nAmt[0] - 1 ; $nAmt[0] ist der Rückgabewert der Funktion DragQueryFileW, hier also die Anzahl gedropper Dateien
$nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
#cs Abfrage der Buffersize 'cch' von 'lpszFile'
### When the function copies a file name to the buffer, the return value is a count of the characters copied, not including _
the terminating null character. ### #ce
$nSize = $nSize[0] + 1 ; von 0- auf 1-basiert für DllStructCreate, damit eigentlich 1 zu groß für DllCall _
; aber egal, soviel Speicher können wir opfern
$pFileName = DllStructCreate('wchar[' & $nSize & ']') #cs wäre schön würde ich DllStruct schon verstehen... _
hier wird wohl irgendwie ein Buffer 'lpszFile' angelegt in dem der Dateiname gespeichert wird. #ce
DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize) ; Buffer füllen
ReDim $gaDropFiles[$i + 1] ; Array wird vergrößert
$gaDropFiles[$i] = DllStructGetData($pFileName, 1) ; ... und bekommt den im Buffer gespeicherten Dateinamen
$pFileName = 0 ; Speicher wieder frei geben
Next
; Am Ende stehen alle Datei-Pfade in $gaDropFilesKann mir bitte noch jemand Feedback geben, ob es so richtig verstanden wurde
-
Habe mich leider noch nicht in das Thema DLL (call, struct, etc) eingearbeitet.
Möchte gerade eine kleine GUI für Drag and Drop Operationen erstellen und habe im Forum für das Handling von mehreren Dateien hier und hier etwas gefunden:Zweierlei verstehe ich (gar) nicht:
erstens was ist der Unterschied zwischen folgenden beiden DLLCall-Varianten, bitte den letzten Parameter beachten (0 vs 255):Spoiler anzeigen
[autoit]; ### Variante 1 ###
[/autoit]
Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', _
'hwnd', $wParam, _
'int', 0xFFFFFFFF, _
'ptr', 0, _
'int', 255)
; ### Variante 1 ###
Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', _
'hwnd', $wParam, _
'int', 0xFFFFFFFF, _
'ptr', 0, _
'int', 0)
und woher kommen die Werte für int = 0xFFFFFFFF (ist das ein Begrenzer?!), ptr = 0 und int = 0 bzw. 255?Zusätzlich: Wie kann man diese Dinge herausfinden respektive wo nachschlagen?
-
Die ist veraltet und die Funktionen wurden inzwischen in die anderen UDFs integriert.
Siehe hierZitatWith the exception of "Strings" this library has been Ported to the standard UDF includes in Autoit.
This libaray is not supported by the original poster nor is it supported by the Dev team.
If installed on a system with the Latest version(s) of AutoIt you'll get bundles of errors.
-
Ok! Jetzt kennen wir den Hersteller und die Modellreihe. Fehlt nur noch die genaue Modellbezeichnung bzw. Modellnummer und dann:
[autoit]#include <IE.au3>
[/autoit]
$sURL = "http://lmgtfy.com/?q=Huawei+Quidway+MIB"
$sModellNr = ""
While $sModellNr = false
$sModellNr = InputBox("SNMP OID finden", "Bitte Modellnummer eingeben: ")
WEnd
$sURL &= "+" & $sModellNr
$oIE = _IECreate($sURL)SCNR
-
Danke für euer Feedback und die spannende Diskussion, die zeigt wieviel Leidenschaft oft drinsteckt
Gibt es ausser persönlichen Vorlieben noch Vor- und Nachteile (Geschwindigkeit, Weiterverarbeitung) bei den zwei Varianten? Insbesondere die Frage
Zitat
Ist es bei Variante B möglich eine For.... In ... Next Schleife zu verwenden?konnte ich selbst noch nicht beantworten - habe aber die letzten Tage auch nicht wirklich daran gearbeitet
Noch eine Bonusfrage zu den Objekten: gibt es einen einfachen oder wenigstens übersichtlichen Weg z.B. mittels eines Tools herauszufinden, welche Methoden ich bei einem Objekt anwenden kann? Bisher habe ich immer abgeschrieben oder in der MSDN-Library geschaut. Das artet aber oft aus und erfordert viel Nachschauen an weiteren Stellen...
Den JSON-Parser von SEuBo hatte ich gesehen, allerdings noch nicht bis ins letzte Detail verstanden. Im Prinzip macht er aber das, was ich selbst vorhatte: den Text per RegEx zu durchstöbern. Mein Gefühl sagt mir aber, dass das nicht die schnellste oder beste Variante ist... (ja ja ich kenne Loriot und den Disput über Gefühle beim Eierkochen). Falls niemand einen anderen Ansatz kennt würde ich den halt an meine Bedürfnisse anpassen und hätte den Vorteil in vereinfachen zu können, da mein JSON direkt am Anfang angibt, wieviele Items es gibt.
-
Herstelller und Modellnummer des Switch wären Hilfreich!
Bei Ciso in der Console: show snmp-server oidlist -
Hi!
Vorneweg: Bin zwar kein Anfänger mehr aber hab trotzdem noch einen weiten Weg vor mir, vor allem bis ich endlich mal schnell und flüssig Programmieren kann und nicht mehr einen Tag für das brauche, was manche Profis hier in einer Stunde oder weniger schreiben.
Für das Projekt "ISBN-Best" bin ich noch in der Konzeptionsphase, d.h. es gibt noch nicht wirklich viel Code sondern ich überlege noch wie ich es am geficktesten einschädele.Hier mal eine Frage zu einem der Probleme:
Um an Daten zu kommen, möchte ich die Google Book-API abfragen.
Als Ergebnis bekommt man einen JSON-String, den möchte ich weiter verarbeiten indem ich die Ergebnisse in einer GUI-basierten Liste anzeigen lasse inkl. Vorschaubild etc.Meine Frage bezieht sich auf den Aufruf und die Organisation der Daten:
Was ist besser/schnelller/praktischer:
Spoiler anzeigen
[autoit]
Variante A$result = InetRead("https://www.googleapis.com/books/v1/volumes?q=isbn:9783499600746")
[/autoit]
ConsoleWrite(BinaryToString($result, 4))
[autoit]
oder Variante B$json = ObjCreate("Microsoft.XMLHTTP")
[/autoit]
$json.Open("GET", "https://www.googleapis.com/books/v1/volumes?q=isbn:9783499600746", 0)
$json.Send
$result = $json.responseText
ConsoleWrite((BinaryToString($result, 4))
Ist es bei Variante B möglich eine For.... In ... Next Schleife zu verwenden?Wie sind die Daten zu Organisieren? Würde Sie gerne in ein Array einlesen wo in [0][$i] die Anzahl der Gefundenen Medien sowie die "Überschriften eingetragen sind (JSON-Result: "totalItems": x) und dann pro Zeile alle Elemente des Mediums wie Titel, Autor, ISBN10, ISBN13, etc (Nebenfrage, kann ich auch die Thumbnails der Medien im Array speichern und von dort aus aufrufen um sie in der GUI anzeigen zu lassen?)
Würde man da mit RegExp arbeiten oder _StringBetween bzw. StringInString?
Vielen Dank für Eure Anregungen!
-
Dem kann ich mich nur anschließen.
Wie ist denn der Status bzw. woran hängt es denn? -
Ich kenne leider gerade keine Firefox-UDF mit der das ähnlich einfach zu machen ist. Vielleicht findet sich ja eine im Netz z.B. in diesem oder dem englischsprachigen Forum.
Den Quelltext habe ich mit Firefox direkt aus der Seite gezogen. Und zwar hab ich es mir ganz einfach gemacht: den entsprechenden Teil markiert und dann "Auswahl-Quelltext anzeigen" gewählt. Falls du öfters was mit "Web" machst empfehle ich dir ausserdem das "Firebug -Add-on".
Der Nachteil von InetRead ist, dass es die Originalseite vom Server liest. Aber du willst ja die Seite, wie sie bei dir nach deinen Eingaben aussieht und da ist eben _IEDocReadHTML praktisch.
Schau dir mal _IECreate an, dann kommst du vlt. darauf was mit Objektvariable gemeint ist. Ein Blick in die IE.au3 verrät dir dann auch, was _IE_Example() eigentlich macht... so kannst du dir die Gesamtzusammenhänge besser erschließen. Simple said: mit der ApplicationObject-Variable kannst du das (soeben erzeugte) Browserfenster ansprechen und somit abfragen und manipulieren. Ohne Grundkenntnisse in HTML und dem DOM wirst du es aber recht schwer haben.
Da du vermutlich auch nicht ohne weiteres einen Weg findest die Kartenpunkte automatisch anzusteuern, könntest du dir auch überlegen diesen Teil des Programms komplett manuell zu machen (punkte anklicken, koordinaten mit c&p "verarbeiten") und dich ganz auf das Programm zur Weiterverarbeitung konzentrieren.
Manchmal hilft es auch detaillierter zu verraten was man vorhat, dann kann dir evtl. auch jemand mit einer Idee für einen ganz neuen Lösungsansatz "auf die Sprünge" helfen.
-
Auch wenn der Thread inzwischen auf gelöst gesetzt ist, hier noch ein Vorschlag, der im Prinzip das ist was schon BugFix vorgeschlagen hat
Spoiler anzeigen
[autoit]$url="rtmpe://cp75298.edgefcs.net/ondemand/mtviestor/_!/intlod/southpark/video/Deutsche/Season_15/1501/acts/sp_1501_act1_DEU_DEU_1280x720_1200.mp4"
[/autoit] [autoit][/autoit] [autoit]
$swfurl="http://media.mtvnservices.com/player/prime/mediaplayerprime.1.10.7.swf?uri=mgid:cms:content:southparkstudios.com:388942&type=network&ref=www.southparkstudios.com&geo=US&group=entertainment&&CONFIG_URL=http%3a%2f%2fmedia.mtvnservices.com%2fpmt%2fe1%2fplayers%2fmgid%3acms%3acontent%3asouthparkstudios.com%3a%2fcontext2%2fconfig.xml%3furi%3dmgid%3acms%3acontent%3asouthparkstudios.com%3a388942%26type%3dnetwork%26ref%3dwww.southparkstudios.com%26geo%3dUS%26group%3dentertainment%26"
$x=1 ; richtig cool wird es erst mit arrays...for $n=1 to $x
[/autoit]
$output="file" & $n & ".mp4"
$progstring="rtmpdump.exe -o " & $output & " -r " & $url & " -W " & $swfurl & " --resume --skip 1"
$progreturn=5 ; da rtmpdump exitcodes 0,1 oder 2 liefert muss hier irgendein Wert > 2 stehen
if FileExists(".\" & $output) Then
$deletereturn = FileDelete(".\" & $output) ; falls rtmpdump z.b. bei einem vorherigen versuch mit einem fehler abbricht, wurde eine file erstellt welches oft weitere erfolgreiche aufrufe verhindert, also löschen.
EndIf
SetError(0) ; jemand mit mehr Erfahrung wird sagen können ob das tatsächlich nötig ist.
while $progreturn <> 0 AND @error = 0 ; AND weil rtmpdump bei erfolg und RunWait bei misserfolg "0" ausgeben, teste ich zusätzlich @error um sicher zu gehen.
$progreturn = RunWait($progstring)
WEnd
; hier noch den programmaufruf für das konvertieren reinpacken...
; dann $swfurl und $url neu setzen. am einfachsten aus einem - vorher erstellten - array auslesen.
NextDenke das ist, was der OP letztendlich wollte bevor er sich zwischen loslassen und festklammern an Batch verheddert hat weil er zwar keine Batch wollte aber dennoch an deren Syntax und den beliebten Einsprungmarken festhielt...
-
Steht doch alles wichtige im Quelltext der Seite:
Spoiler anzeigen
PHP<tbody xmlns="http://www.w3.org/1999/xhtml"><tr id="trRowHeader"><td colspan="4">Meine Koordinaten:</td></tr><tr id="trRowHeader"><td/><td style="text-align: center;">Rechtswert [m]</td><td style="text-align: center;">Hochwert [m]</td></tr><tr id="trRow1" style="cursor: pointer;"><td style="padding-right: 5px;"><b>[1]</b> </td><td style="text-align: center;">-1016.41</td><td style="text-align: center;">341661.27</td><td><input type="image" src="ajax/resources.ctrl?ControlImages/Map/IdentifyCloseN.gif" alt="Koordinaten löschen" title="Koordinaten löschen"/></td></tr><tr id="trRow2" style="cursor: pointer;"><td style="padding-right: 5px;"><b>[2]</b> </td><td style="text-align: center;">-1609.08</td><td style="text-align: center;">341695.13</td><td><input type="image" src="ajax/resources.ctrl?ControlImages/Map/IdentifyCloseN.gif" alt="Koordinaten löschen" title="Koordinaten löschen"/></td></tr><tr id="trRow3" style="cursor: pointer;"><td style="padding-right: 5px;"><b>[3]</b> </td><td style="text-align: center;">4707.07</td><td style="text-align: center;">340137.26</td><td><input type="image" src="ajax/resources.ctrl?ControlImages/Map/IdentifyCloseN.gif" alt="Koordinaten löschen" title="Koordinaten löschen"/></td></tr><tr id="trRow4" style="cursor: pointer;"><td style="padding-right: 5px;"><b>[4]</b> </td><td style="text-align: center;">7653.48</td><td style="text-align: center;">342999</td><td><input type="image" src="ajax/resources.ctrl?ControlImages/Map/IdentifyCloseN.gif" alt="Koordinaten löschen" title="Koordinaten löschen"/></td></tr></tbody>
[autoit]
und da alles gut benannt ist, lasst sich vermutlich mit regexp (gibt es hier ein sehr gutes tutorial) und inetread machen was du brauchst.
Funktionen:BinaryToString(InetRead())
[/autoit]und
[autoit]StringRegExp()
[/autoit]
[autoit]
Edit sagt, dass diese Funktionen hier die bessere Wahl ist - da die andere deine Änderungen nicht berücksichtigt:_IEDocReadHTML
[/autoit] -
ich glaube er will einfach mehrere befehle in runwait verketten und braucht die operatoren "&" bzw. "&&"
da kuckst du: http://de.wikibooks.org/wiki/Batch-Pro…atch-Operatoren