Simples Connect Tool von Batch in AutoIt übernehmen?

  • Hi Leute, ich bin neu hier, und ich hoffe hier kann mir jemand helfen. :rolleyes:

    Und zwar habe ich folgendes Problem.

    Ich arbeite seit Jahren mit kleinen Batchtools die ich mir erstelle, und damit bin ich bisher immer gut gefahren. Bis jetzt! Ich habe ein kleines Tool gebastelt welches auf ein Programm zugreift, und es startet indem es eine IP und einen Port anspricht. Das funktioniert als Stapelverarbeitung bisher ganz gut. Das Problem an der Sache ist nur, das ich dieses Tool gerne in ein anderes Tool integrieren möchte. Und damit niemand die Daten ausliest hatte ich es bisher immer in eine Exe kompiliert. Und da ist wiederum das Problem das viele Virenscanner auf dieses Tool anschlagen und das natürlich für mich negative Presse ist.

    Daher dachte ich mir, wenn ich sowas einfach in als AutoIt Script erstelle und dann da in eine Exe kompiliere das diese False-positiv Meldung dann nicht mehr existiert. Ich hoffe es zumindest inständig.

    Bisher hatte ich für mein Batchtool immer den Bat to exe Converter verwendet und mittlerweile bei Virustotal hochgeladen. 10 Scanner schlagen da an. Mache ich die ausgeführte Batch allerdings beim kompilieren sichtbar dann schlagen nur 3 Scanner an. Das ist allerdings immernoch zu viel.

    Meine ersten Versuche sehen so aus:

    ShellExecute (@folder.*)
    $datei = "C:\folder.*"
    Run ($program.exe -IPAdresse:Port)

    Mir scheint so als kennt AutoIt keine Wildcard Ordner? Das Programm muss gezielt nach Ordnern suchen die etwa so geschrieben werden:

    Ordname1.Ordnerzunamen

    Der Punkt ist wichtig. Der Ordnername1 heißt immer gleich. Der Ordnerzuname ändert sich willkürlich daher hatte ich das in der Batch immer so geschrieben:

    Ordnername1.*

    Das Sternchen dafür das er einen beliebigen Ordnerzunamen sucht.

    Nur das funktioniert irgendwie nicht, egal was ich versuche. ?(

    Der Run Befehl soll dann auf das Programm zugreifen und gleichzeitig auf eine bestimme IP und den dazugehörigen Port.

    Ich habe natürlich auch schon viel rumgegoogelt und Tutorial-Videos bei YT angeschaut um irgendwie einen Anhaltspunkt wie ich sowas erstelle, konnte aber nichts passendes finden. Deswegen frage ich hier und hoffe das ich einen netten geduldigen Programmierer finde der mir das ganze mal erklärt. Ich tu mich ziemlich schwer in Sachen Programmierung, und brauche eine Weile bis ich bestimmte Sachen verinnerlicht habe.

    Was mache ich also falsch? :(

  • Hallo und willkommen.

    Du kannst Batch-Syntax nicht einfach so als AutoIt Code verwenden.

    ShellExecute (@folder.*)
    $datei = "C:\folder.*"
    Run ($program.exe -IPAdresse:Port)

    Damit kann AutoIt nichts anfangen. @folder gibt es hier nicht. Ich empfehle dir dringenst ein Blick in die AutoIt Hilfe zu werfen (die findest du im Scite Editor wenn du F1 drückst oder im AutoIt Installationsordner, falls du einen anderen Editor verwendest). Wenn du dir einige Script Beispiele anschaust, dann erkennst du wie AutoIt Code aufgebaut ist.
    Leider gibts keine "aktuelle" deutsche Hilfe, aber Englisch sollte ja nicht wirklich ein Problem sein ;)

  • Hi,
    wenn du eine Batch in ein AutoItscript überführen willst, wäre es sinnvoll, diese Batchdatei zu zeigen statt deines nicht funktionierenden AutoIt-Codes! ;)

    . Und damit niemand die Daten ausliest hatte ich es bisher immer in eine Exe kompiliert.

    Sowohl aus der Batch-compilierten Exe als auch der AutoIt-Exe kann jeder Anfänger bei Bedarf den Quellcode auslesen!

    Leider gibts keine "aktuelle" deutsche Hilfe, aber Englisch sollte ja nicht wirklich ein Problem sein

    Wenn du meinst, dass die deutsche Hilfe nicht aktuell ist, dann beschreibe das mal näher!
    Ich benutze täglich die deutsche Hilfe, bisher habe ich noch keine Funktion gefunden, die dort nicht behandelt ist!

  • Wenn du meinst, dass die deutsche Hilfe nicht aktuell ist, dann beschreibe das mal näher!


    Die AutoIt Installation liefert von Haus aus nur die englische Hilfe. Und die hier im Forum vorhandene downloadbare Hilfe beinhaltet, soweit mir bekannt ist,
    noch nicht die geänderten Funktionen bzw jene, die nun anders geschrieben werden. Mein Wissensstand ist, dass die dt. Hilfe für AutoIt 3.3.8.1 ist. Es gab
    ja mal den Versuch, die Hilfe zu updaten, aber das hatte sich doch im Sand verlaufen, oder nicht?
    Wenn ich aber mit meiner Aussage falsch liege, dann entschuldige ich mich natürlich dafür.

  • Wie du richtig vermutest kann Autoit keine "Wildcard Ordner". Mir war nichtmal bewusst, dass man in Batch code sowas tun kann. Mich würde rein aus Neugierde im übrigen auch dein vollständiger Batch code interessieren, vertrauliche Zugangsdaten kannst du ja vorher entfernen.

    Nun zu deiner Aufgabenstellung:

    Soweit ich dich verstanden habe gibt es auf dem oder den Systemen wo das Script laufen soll immer nur einen Ordner der dein Suchkriterium erfüllt, wobei der erste Teil des Ordnernamens statisch und auf allen Systemen gleich ist und der letzte Teil variabel ist und auf allen Systemen abweicht. Wie dem auch sei hier eine Liste an Funktionen die für dein vorhaben hilfreich sein dürften:

    [autoit]


    #include <file.au3>
    #include <array.au3>
    _filelisttoarray(...details siehe hilfe...) ; erstellt ein Array mit einer Liste von Dateien und / oder Ordnern, vergleichbar mit dem DOS Befehl "dir"
    _arraysearch(...details siehe hilfe...) ; findet Suchbegriffe in einem Array, Teilübereinstimmungen sind auf Wunsch möglich, damit findest du letzlich raus welcher der Ordner dein gesuchter ist
    ; dann solltest du dir noch Tutorials anschauen wie man in Autoit Strings verkettet

    [/autoit]

    Evtl. solltest du dir auch das Array Tutorial von Bugfix anschauen: http://www.bug-fix.info/array_tut.htm

    Zu deinen false positiv Virenscanner Ergebnissen sei vielleicht noch erwähnt, dass auch kompilierte Autoit Programme regelmässig von Virenscannern erkannt werden. Jenachdem welche includes man nutzt, ob man 32 oder 64bit verwendet, ob die exe Kompression UPX genutzt wird usw.

    • Offizieller Beitrag

    dann schlagen nur 3 Scanner an. Das ist allerdings immernoch zu viel.


    Die Anzahl ist völlig unerheblich, wichtiger ist welche Scanner anschlagen. Meldet "virustotalschutz-jamaica.com" oder "the-safest-scan-u-know.ru" oder irgend solch total unbekanntes Programm, dann hast du alles richtig gemacht. :D

  • Zitat

    Die Anzahl ist völlig unerheblich, wichtiger ist welche Scanner anschlagen. Meldet "virustotalschutz-jamaica.com" oder "the-safest-scan-u-know.ru" oder irgend solch total unbekanntes Programm, dann hast du alles richtig gemacht.


    Keine Ahnung wie du das meinst. Ich hab meine exe auf Virustotal.com hochgeladen und da sehe ich dann eine Liste der Auswertungen. Da ich dieses Tool aber weitergeben möchte sollten keine Scanner anschlagen. Man es ja das viele gleich schreien das man Viren verteilt obwohl es keine sind. Leider war es auch bei meinem Batch-Script das Problem. Daher suche ich ja eine Lösung des Problems.

    Zitat

    Sowohl aus der Batch-compilierten Exe als auch der AutoIt-Exe kann jeder Anfänger bei Bedarf den Quellcode auslesen!


    Das sehe ich nicht so. Ein Anfänger weiß zu 100% nicht wie man so eine Exe-Datei öffnet und ausliest. Bei einer Batch ist das easy, rechtsklick und bearbeiten.

    Zitat


    Soweit ich dich verstanden habe gibt es auf dem oder den Systemen wo das Script laufen soll immer nur einen Ordner der dein Suchkriterium erfüllt, wobei der erste Teil des Ordnernamens statisch und auf allen Systemen gleich ist und der letzte Teil variabel ist und auf allen Systemen abweicht. Wie dem auch sei hier eine Liste an Funktionen die für dein vorhaben hilfreich sein dürften:


    Genau so meinte ich das. Das Programm, auf welches dieses Tool zugreifen soll verwendet den Benutzernamen als Teil des Ordnernamen´s. Nach dem Punkt steht also immer der eingebene Benutzername.

    Zitat

    Damit kann AutoIt nichts anfangen. @folder gibt es hier nicht.


    Das Folder war nur als Beispiel gedacht. Also quasi der Ordnername. Heißt also er greift auf den Ordner: folder.NAME zu (Folder Punkt Name). Der NAME ändert sich permanent. Das "Folder" bleibt immer gleich. Egal auf welchem PC.

    Und gleich im voraus, ich möchte nicht das ein AutoIt Tool auf die Batch zugreift sondern ich möchte die Batch durch ein reines AutoIt Tool ersetzen. Und da die Idee und die Umsetzung meines Batch-Tools von mir stammt möchte ich auch nicht das jeder meine Batch besitzt um sie nachbauen zu können. Daher gehe ich auch nicht weiter darauf ein, wofür sie verwendet wird, denn Google liest mit ;)

    So hier mal der Teil der Batch worum es geht:

    Code
    cd C:\FOLDER.*
    start PROGRAMM.exe -PROGRAMMBEFEHL IPADRESSE:PORT

    Und genau das möchte ich in AutoIt umsetzen und als Exe kompilieren.

    Einmal editiert, zuletzt von djdanby (23. Dezember 2014 um 02:45)

  • Dann schau dir mal die Befehle "Run" bzw "ShellExecute" noch genauer an. Da kannst du alles so eingeben wie du es haben willst.
    Den Programmnamen und die Argumente dahinter sowie den speziellen Ordnernamen als WorkDir. Da niemand von uns nun weiss, wie diese speziellen Ordnernamen tatsächlich zustande kommen, kann dir
    da vermutlich auch keiner genau helfen, höchstens Tips geben. Vergibst du die Namen oder kann sich der User selbst einen aussuchen? Ich würde den Ornernamen als Variable hinterlegen, zb so:

    [autoit]

    $user = "HansWurst0815"
    $workdir = "C:\FOLDER." & $user

    [/autoit]

    Es gibt dann verschiedenste Möglichkeiten um den User zu integrieren.

    Für einen besseren Vorschlag müsste ich nun meine [Blockierte Grafik: http://cdn2.spiegel.de/images/image-73031-panoV9free-kmik.jpg] rauskramen.

    Und kurze Anmerkung: Wenn du Code als Beispiel zeigst, dann solltest du das auch dazu schreiben und nicht:

    Meine ersten Versuche sehen so aus: ...

    Denn durch deinen Codeschnipsel geht wohl beinahe jeder, der sich etwas näher mit AutoIt beschäftigt, davon aus, dass du ... naja, wirst dir das wohl denken können :)

  • Zitat

    der sich etwas näher mit AutoIt beschäftigt, davon aus, dass du ...

    ...Das ich was? Nein kann es mir nicht denken ?( Nen Virus basteln? Nein! Ist nix schädliches oder sonstiges. Ist nur ein kleines Hilfsprogramm für die faulen oder nennen wir es eher Komfortprogramm. ;)


    Zitat

    Vergibst du die Namen oder kann sich der User selbst einen aussuchen?

    Der Name wird mit der Installation des entsprechenden Programmes festgelegt. Heißt also, sobald man sich in dem Programm registriert, fragt es nach einem Usernamen. Den gibt man ein und bei der Installation wird automatisch der Username in den Ordnername übernommen. Daher wechselt er beliebig, jeh nachdem wie der Nutzer in vergibt.

    Zitat

    $user = "HansWurst0815"

    Muss ich unbedingt einen Nutzer angeben? Weil beim Batch benötige ich ja auch keinen da der Workingdir ja auf dem Laufwerk C: ist. Für mich das komplettes Neuland also nicht wundern wenn ich soviel frage. Normalerweise benötige ich nicht soviel Scriptgekrakel. Batch ist in der Hinsicht wesentlich leichter find ich :D

  • Ich bin mal wieder raus....
    Nach 10 Tagen und 10 Posts ist der TE nicht in der Lage, die Batchdatei zu posten. Die Begründung

    ich möchte die Batch durch ein reines AutoIt Tool ersetzen. Und da die Idee und die Umsetzung meines Batch-Tools von mir stammt möchte ich auch nicht das jeder meine Batch besitzt um sie nachbauen zu können. Daher gehe ich auch nicht weiter darauf ein, wofür sie verwendet wird, denn Google liest mit

    ist der Brüller an sich! Meine ersten Batchdateien habe ich 1984 geschrieben, seitdem ist ALLES ausgereizt worden. Da gibt es keine Geheimnisse mehr!
    Ich habe in den 90ern Code gesehen, da haben 3 IBM-Programmierer eine Woche analysiert was ein Kollege da fabriziert hatte. Dagegen war Assembler-Debugging ein Kinderspiel!

    @Threadersteller
    Andere Leute sollen DEINE Arbeit machen, Infos gibts bis auf 2 Zeilen Code keine, was zu Rumgestochere im Nebel und zu Glaskugelgelese führt. Natürlich werden die Helfer nicht erwähnt, auch eventuelle andere User mit demselben Problem finden infolge "Geheimhaltung" diesen Thread nicht...

    Alles in allem wieder mal ein User und ein Thread, wie ihn kein Forum gebrauchen kann!

  • ...Das ich was? Nein kann es mir nicht denken

    ... Das du zu faul bist, dich mit AutoIt auseinander zu setzen....

    Muss ich unbedingt einen Nutzer angeben?

    Wenn der User bei erstmaligen Programmstart einen Namen vergibt, dann kannst du den "abfangen", irgendwo hinterlegen und in deinem Script einlesen um den dann automatisch zu verwenden. Gängige Möglichkeiten dafür bieten dir die Funktionen IniRead/IniWrite bzw RegRead/Regwrite. Oder du legst das Programm automatisch ins WorkDir, dann kannst du das Makro @ScriptDir verwenden.

  • Nochmal... hast du dir die beiden Funktionen _filelisttoarray() und _arraysearch() überhaupt in der Hilfe angesehen? Wie bereits erwähnt kannst du damit den gesuchten Ordnerpfad problemlos ermitteln. Ansonsten schließe ich mich Andy einfach mal an. Du scheinst weder gewillt zu sein hier Klartext zu reden um was es überhaupt geht (vermutlich mal wieder ein Verstoss gegen die Forenregeln), noch scheinst du gewillt zu sein dein Problem selbst zu lösen in dem du die hier genannten Lösungsansätze prüfst.

    Was deine Virenphobie anbelangt... Bugfix wollte dir denke ich sagen, dass es völlig normal und unerheblich ist wenn 3 unbekannte und kaum verbreitete Virenengines von über 50 deine Datei als Virus erkennen. Solange die "big player" wie Kaspersky, Avast, AVG, McAffee, Trendmicro, Avira und Bitdefender nichts finden würde ich mir kaum sorgen machen, dass ein normaler Anwender jemals eine Warnmeldung erhält.

  • djdanby:
    Erst einmal zu dem Problem von dir. Ich sage Dir, es ist mit AutoIt alles und noch viel mehr möglich, als das von Dir bereibene Problem zu lösen.
    .
    Also ich selber bin zu AutoIt gewechseln, als ich mit dem "Batching" nicht mehr weiter kam. Ich habe mich hier freundlich vorgestellt und dann auch mein Problem geschildert.
    Ich kann Dir nur sagen, das es nicht fein ist, wenn man Hilfe erwartet und nicht bereit ist so viel Auskunft zu geben, das man das, wie DU es nennst Tool" auch nur ansatzweise nachfolgen kann.
    Mein Vorschlag, damit wir Dir helfen können wäre, das Du Dein Tool vielleicht in der Form veränderst, das Du nur die Werte oder die Buttons oder was auch immer mit sinnlosen Variablen benennst und dahinter schreibst z. B. " ; Unwichtig-1". Grund für die Nummer, das wir dann ggf. fragen können "bei Unwichtig-1 bräuchte ich mehr Info" oder so.
    .
    Ansonsten meine ich ist es sinnlos, hier im trüben Wasser zu fischen.
    Ich selber kann aus Datenschutzgründen hier nicht immer das posten, was ich gerne würde, aber wenn man freundlich das Problem erklärt und ggf. dazu schreibt "Beispieldaten", war mir noch nie jemand böse. Es wurde ggf. als PN nachgefragt, aber dafür ist diese Funktion ja auch da.
    .
    Also, nun gib Dir einen weihnachtlichen "Stopser" und dann bekommen wir es schon hin.
    .
    Aber immer lieb und artig sein, sonst kommt der Weihnachtsmann nicht. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Zitat

    ....DU es nennst Tool" auch nur ansatzweise nachfolgen kann.

    Also ich weiß nicht was daran so schwer zu verstehen ist das ich ein Programm mittels einer Batch mit bestimmten Parametern (Wie oben im Batchcode) aufrufe und damit ein Programm ansteuere? Ich bin eigentlich der Meinung das ich es vernünftig erklärt habe. Falls nicht dann tuts mir leid.

    Zitat

    Meine ersten Batchdateien habe ich 1984 geschrieben, seitdem ist ALLES ausgereizt worden. Da gibt es keine Geheimnisse mehr!

    Das Geheimnis liegt nicht in der Batch, sondern WAS und WIE ich es ansteuere ;) Das jeder Depp so ne Zwei-Zeilen Batch schreiben kann ist mir klar. Nur kommt nicht jeder dahinter wie ich darauf kam das Programm mit dem Tool anzusteuern. Darum geht es mir einfach. Und das oben sind nur 2 wichtige Zeilen des Codes. Der Rest wird (zumindest noch) nicht benötigt. Daher möchte ich erstmal mit dem einfachsten Teil beginnen damit ich erstmal dahinter steige wie Autoit funktioniert.

    Und um das gleich mal im voraus klarzustellen. Ich möchte KEIN fertiges Script haben, ansonsten hätte ich im anderen Forenthread gepostet. ;)

    Zitat

    Nochmal... hast du dir die beiden Funktionen _filelisttoarray() und _arraysearch() überhaupt in der Hilfe angesehen?

    Nein da hatte ich noch nicht geschaut. Aber danke für den Tip :):thumbup:

    Zitat

    (vermutlich mal wieder ein Verstoss gegen die Forenregeln)

    Es ist nichts schädliches!!! Das habe ich bereits vorher schonmal geschrieben. ;)

    Zitat

    Was deine Virenphobie anbelangt... Bugfix wollte dir denke ich sagen, dass es völlig normal und unerheblich ist wenn 3 unbekannte und kaum verbreitete Virenengines von über 50 deine Datei als Virus erkennen. Solange die "big player" wie Kaspersky, Avast, AVG, McAffee, Trendmicro, Avira und Bitdefender nichts finden würde ich mir kaum sorgen machen, dass ein normaler Anwender jemals eine Warnmeldung erhält.

    Wenns mal MEINE Virenphobie wäre :D Leider ist das Problem das die Nutzer meiner App in der meine Batch.exe arbeitet sich darüber beschwert hatten, das ihre Virenscanner anschlagen. Und ich habe denen auch versucht zu erklären was eine false-positive Meldung ist, trotzdem ist eben das Vertrauen getrübt und spricht sich auch schnell rum. Und negative Presse benötige ich nicht, da ich meine kostenlosen Dienstleistungen ja auch weiteren Personen anbieten möchte und stetig verbessern und erweitern möchte.

    Zitat

    Wenn der User bei erstmaligen Programmstart einen Namen vergibt, dann kannst du den "abfangen", irgendwo hinterlegen und in deinem Script einlesen um den dann automatisch zu verwenden. Gängige Möglichkeiten dafür bieten dir die Funktionen IniRead/IniWrite bzw RegRead/Regwrite. Oder du legst das Programm automatisch ins WorkDir, dann kannst du das Makro @ScriptDir verwenden.

    Ebenfalls nützliche Tips. Danke dafür. Werde ich mal mit in Betracht ziehen. :thumbup:

    Zitat

    Andere Leute sollen DEINE Arbeit machen, Infos gibts bis auf 2 Zeilen Code keine, was zu Rumgestochere im Nebel und zu Glaskugelgelese führt. Natürlich werden die Helfer nicht erwähnt, auch eventuelle andere User mit demselben Problem finden infolge "Geheimhaltung" diesen Thread nicht...

    Wer soll denn meine Arbeit machen? Die mach ich am Ende selbst. Versuche allerdings mal mit 0% Wissen über ein neues Programm, welches vor allem so komplex ist, sofort zu verstehen wie es funktioniert. Vor allem die Begriff-zusammenhänge leuchten mir da meist nicht sofort ein. Da helfen auch keinen Anleitung wenn ich nichtmal weiß wo ich anfangen soll. Ich bin eher der Typ der durch Praxis und Tips lernt.
    Und ich habe mir schon viele Programmiersprachen angeschaut. Die hier schien mir am einfachsten sie zu lernen. Aber mal schauen ob ich es hinbekomme. Vor allem da meine Freizeit sehr begrenzt ist und ich so oder so immer tausend Dinge gleichzeitig im Kopf habe. Somit lerne ich auch langsamer wie andere bei sowas.

    Zitat

    Erst einmal zu dem Problem von dir. Ich sage Dir, es ist mit AutoIt alles und noch viel mehr möglich, als das von Dir bereibene Problem zu lösen.
    Also, nun gib Dir einen weihnachtlichen "Stopser" und dann bekommen wir es schon hin.

    Eben weil vieles möglich ist interessiert mich das Programm. Ich hab mir auch schon einige Code Schnipsel aus den anderen Forenbereichen angeschaut um erstmal hinter die Grundstruktur zu kommen. Bis jetzt sieht es teilweise verständlich aus. Ich versuchs es erstmal selbst soweit hinzubekommen und melde mich zurück wenns wieder klemmt. Wird allerdings erstmal etwas dauern da ich im Weihnachts und Sylvesterstress bin ^^
    Man kann auf jedenfall coole Sachen damit machen daher bleibe ich da auch dran :)