Sammys Themen

  • Hi ich bin neu hier und wollte mal fragen ob ihr mir vielleicht helfen könnt.

    Ich probier momentan eine eigene Funktion zu schreiben. Die Funktion soll den hinteren Teil der URL auslesen das wär bei der unten stehenden URL WindowsXP-KB835935-SP2-DEU.exe. Nun wie mach ich das, das die Funktion alles von liest bis sie auf dieses Zeichen "/" stößt.

    [autoit]


    ;===============================================================================
    ;
    ; Function Name: FileGet
    ; Description:: Ladet eine Datei aus dem Internet herunter
    ; Parameter(s): $URL = URL zur Datei im Internet
    ; Requirement(s):
    ; Return Value(s): $filetype = Dateiendung (z.B. exe, txt)
    ; $filename = Dateiname (z.B. Test.exe, Test.txt)
    ; Author(s): Sammy
    ;
    ;===============================================================================
    ;
    FileGet("http://download.microsoft.com/download/9/6/4/96442257-721a-4cd5-9006-10a40cbb45cb/WindowsXP-KB835935-SP2-DEU.exe")

    [/autoit][autoit][/autoit][autoit]

    #cs
    Dateiendung: exe
    Dateiname: WindowsXP-KB835935-SP2-DEU
    #ce

    [/autoit][autoit][/autoit][autoit]

    Func FileGet($URL)

    ; Variablen
    Local $URL

    ; Lese Dateiendung aus
    $filetype = StringRight($URL, 3)

    ; Lese Dateiname aus
    $stringfile = StringTrimRight($URL, 3)
    $filename = StringRight($stringfile, *)

    ; Lade Datei herunter
    InetGet($URL, @ScriptDir & "\" & $filename & "." & $filetype, 1, 0)

    EndFunc ;==>FileGet

    [/autoit]

    Einmal editiert, zuletzt von Sammy (21. Oktober 2006 um 20:38)

    • Offizieller Beitrag

    Hi,

    ich denke, es gibt wesentlich elegantere Wege die Datei runterzuladen, aber ...

    [autoit]

    $stringURL ="http://download.microsoft.com/download/9/6/4/96442257-721a-4cd5-9006-10a40cbb45cb/WindowsXP-KB835935-SP2-DEU.exe"
    $filename = StringSplit($stringURL, "/")
    MsgBox(0,"Die Datei", $filename[$filename[0]])

    [/autoit]

    hier erstmal die Antwort der Frage.

    So long,

    Mega

    • Offizieller Beitrag

    Hallo und herzlich :willkommen:

    Ich würde es ganz anders machen ;) Nämlich so:

    [autoit]

    $URL = "http://download.microsoft.com/download/9/6/4/96442257-721a-4cd5-9006-10a40cbb45cb/WindowsXP-KB835935-SP2-DEU.exe"
    $DateiName = StringTrimLeft($URL, StringInStr($URL, "/",0, -1))
    InetGet($URL,@ScriptDir&"\"&$DateiName)
    MsgBox(0,"","Die Datei "&$DateiName&" wurde erfolgreich gedownloadet!")

    [/autoit]

    Mfg Spider

    Edit: Verdammt^^ da war schon wider jemmand schneller..
    Edit²: Verdammt again^^ hab ausversehen statt download dotnload geschrieben kp warum^^ jetzt geht es ;)

  • Danke es funktioniert. Anbei das Ergebnis.


    Edit: Danke gtaspider für dein Beispiel leider hat es nicht funktiioniert. Ich hab AutoIt auf meinem Stick. Vielleicht kann es an dem liegen. Noch eine Frage, wie macht ihr das eigentlich mit den Codes. Das obendrüber AutoIt steht

    Edit2: Das rechte Bild bezieht sich auf gtaspiders Beispiel. Kann wahrscheinlich daran liegen, das irgendeiner auf meinem Admin-PC GetRight installiert hat

  • mit [ autoit] [ /autoit] , nur ohne die leerzeichen!


    €€ grrml da war wohl wer schnelle r :tier:

    Einmal editiert, zuletzt von huggy (21. Oktober 2006 um 20:12)

    • Offizieller Beitrag

    Hi,

    dafür mußt beim Editieren mal oben in der Icon Liste nach dem A Ausschau halten. oder einfach [_spoiler][_autoit][_/autoit][_/spoiler] schreiben.

    Alles ohne die Unterstriche!!!

    Spoiler sorgt für eine Ein/Auslkapp-Funktionalität.

    Edit: Was für eine Gier hier herrscht um zu helfen. :rofl:

    So long,

    Mega

  • Danke. Ich habe letzte Woche mein Netzwerk zu Hause komplett umgebaut und dann kam mir die Idee. Das ich ein eigenes Programm schreib. nun wollte ich fragen ob das möglich ist. Und zwar der Admin-PC hat Windows XP Professional Service Pack 2 und die anderen 5 PCs haben das gleiche Betriebssystem. Nun möchte ich das die anderen PCs mit dem Admin-PC kummunzieren. Die PCs sollen überprüfen ob sie auf dem Stand vom Admin-PC sind, wenn ja ist alles OK wenn nein, soll der Admin-PC die PCs automatisch auf den neuesten Stand bringen

    Einmal editiert, zuletzt von Sammy (21. Oktober 2006 um 20:37)

  • Was verstehst du unter Auto-Update.

    Kurze Fakten über mein Netzwerk:
    Internet: Admin-PC (Admin-PC stellt für die anderen PCs die Verbindung her)
    Viren: Alle verwenden Anti-Vir
    Firewall: Windows-Firewall abgeschaltet. Alle verwenden Zone-Alarm
    Updates: Alle Updates lädt der Admin-PC herunter und speichert sie auf dem
    Server "P:\Updates\"
    Software: Liegt im Verzeichnis "P:\"

    • Offizieller Beitrag

    Hi,

    meinte die normale Update-Funktion von Windows. Aber wenn du die Dateien nur 1x runterladen willst, dann kannst es natürlich auch so machen wie du es vorhast.

    Beim Start der "Clients" könntest du ja einbauen, dass sie sich den Share mappen und nach Updates Ausschau halten.

    Wenn Sie Updates finden, dann installieren sie diese und schreiben mit _FileWriteLog den Status.

    So long,

    Mega

    P.S.: Viel Glück und wenn Fragen sind... immer her damit.

  • Ich leg das mit den Updates mal nach hinten und schreib ein kleines Programm für die untenstehende Idee.

    Zitat

    Original von Sammy
    Danke. Ich habe letzte Woche mein Netzwerk zu Hause komplett umgebaut und dann kam mir die Idee. Das ich ein eigenes Programm schreib. nun wollte ich fragen ob das möglich ist. Und zwar der Admin-PC hat Windows XP Professional Service Pack 2 und die anderen 5 PCs haben das gleiche Betriebssystem. Nun möchte ich das die anderen PCs mit dem Admin-PC kummunzieren. Die PCs sollen überprüfen ob sie auf dem Stand vom Admin-PC sind, wenn ja ist alles OK wenn nein, soll der Admin-PC die PCs automatisch auf den neuesten Stand bringen


    Nun habe ich mal mit den Update-Namen angefangen.

    [autoit]


    $file = "WindowsXP-KB834707-x86-DEU.exe"
    $filename = StringTrimLeft($file, StringInStr($file, "-KB")-1 + 1) ; "WindowsXP-" wird versteckt. "-x86-DEU.exe" soll noch versteckt werden.
    MsgBox(0, "Die Datei", $filename) ; Muss "KB834707" anzeigen

    [/autoit][autoit][/autoit][autoit]

    #cs
    WindowsXP-KB834707-x86-DEU wird zu KB834707
    WindowsXP-KB893066-V2-x86-DEU wird zu KB893066-V2
    #ce

    [/autoit]

    Vielleicht könnt ihr mir weiterhelfen

    Edit: Noch ne Frage, wie krieg ich das hin, das die anderen PCs prüfen ob sie auf dem gleichen Stand sind wie der Admin-PC

    2 Mal editiert, zuletzt von Sammy (22. Oktober 2006 um 19:48)

    • Offizieller Beitrag

    Hi,

    [autoit]

    $file = "WindowsXP-KB834707-x86-DEU.exe"

    [/autoit][autoit][/autoit][autoit]

    $filename = StringSplit($file, "-")
    MsgBox(64, "Name", $filename[2])

    [/autoit][autoit][/autoit][autoit]

    ; oder

    [/autoit][autoit][/autoit][autoit]

    MsgBox(64, "Name", _StringBetween1($file, "-", "-x"))

    [/autoit][autoit][/autoit][autoit]

    ; oder

    [/autoit][autoit][/autoit][autoit]

    MsgBox(64, "Name", StringMid($file, 11, 8))

    [/autoit][autoit][/autoit][autoit]

    Func _StringBetween1($s_String, $s_Start = 0, $s_End = 0)
    $s_Start = StringInStr($s_String, $s_Start) + StringLen($s_Start)
    ;ConsoleWrite(StringInStr($s_String, $s_Start) + StringLen($s_Start) & @LF)
    Return StringMid($s_String, $s_Start, StringInStr($s_String, $s_End) - $s_Start)
    EndFunc ;==>_StringBetween1

    [/autoit]

    Frage 2: FileExists()

    So long,

    Mega

  • Danke. Ich hab noch eine andere Frage und zwar bezieht sich die auf eigene Funktionen. Und zwar ich möchte gerne zwei eigene Funktionen schreiben die sich mit dem Thema Passwort beschäftigen. Nun wollte ich fragen, ob es solch eine Funktion schon gibt.

    Kurze Erkärung über die Funktionen:
    Das Passwort steht in der Datei "Test.sys" sys=Systemdatei
    Es steht ein Passwort in der ersten Zeile der Datei "Test.sys"
    Die Funktion EncryptPassword verschlüsselt das Passwort in der Datei "Test.sys".
    Zum das Passwort wieder zu entschlüsseln kommt die Funktion DecryptPassword. Die Funktion wandelt das verschlüsselte Passwort in ein lesbares Passwort.

  • Danke peethebee. Also geht das auch ohne irgendeine Datei. Ich hab mir mal Galenda angschaut. Nicht das Skript den Aufbau des Verzeichnisses. Und da habe ich zwei Dateien entdeckt und zwar etdes.exe und dtdes.exe oder so ähnlich

  • Als müsste meine Funktion auch gehen nur eine Zeile in der Datei zu verschlüsseln. Oder wird das nicht gehen?

  • peethebee : Welche Möglichkeit würdest du nehmen die mit der Datei oder lieber _StringEncrypt.

    Ich frag lieber nochmal weil ich kenne mich noch nicht so gut in AutoIt aus.