Run AutoIt

07/20/2009 15:31 felixli93#1
Hallo zusammen,

ich möchte mir ein script machen, welches ein anders script über die AutoIt.exe startet.
bisher habe ich:
Code:
Run ("C:\Programme\AutoIt3\AutoIt3.exe")
jetzt müsste ich noch den Parameter einfügen, damit AutoIt weiß, welches script es starten soll, und nicht den FileOpenDialog anzeigt.
Normalerweise sollte es mit:
Code:
Run ("C:\Programme\AutoIt3\AutoIt3.exe C:\Programme\AutoIt3\mein script.au3")
gehen, jedoch klappt es nicht, weil er die Datei nicht findet.
durch das leerzeichen bei "mein script" meint er, der dateinamen sei zu Ende, das heißt, er will die datei "C:\Programme\AutoIt3\mein" öffnen und somit erscheint eine fehlermeldung.

Wie kann ich ein Leerzeichen "umschreiben"?
07/20/2009 15:56 Frezee#2
Es könnte sein, dass du statt dem hier "Beispiel" diese Anführungszeichen verwenden musst 'Beispiel'.

Ansonsten kannst du doch einfach den Dateinamen umbennen, oder?^^
07/20/2009 16:21 felixli93#3
Quote:
Originally Posted by Frezee View Post
Es könnte sein, dass du statt dem hier "Beispiel" diese Anführungszeichen verwenden musst 'Beispiel'.

Ansonsten kannst du doch einfach den Dateinamen umbennen, oder?^^
die idee mit 'denen' hatte ich auch schon, doch es klappt genauso wenig.
das problem mit dem leerzeichen ist auch nicht nur bei dieser datei so, sondern tritt natürlich immer dann auf, wenn etwas im ordner "Eigene Dateien" bzw. selbst "Dokumente und Einstellungen" zu finden ist.

Dort könnte ich natürlich schreiben "Dokume~1" und "Eigene~1", damit es klappt, aber ich möchte das gerne ohne die "~" erreichen...

danke für die antwort trotzdem
07/20/2009 16:42 Frezee#4
Ich habs:
Code:
Run(' "C:\Programme\AutoIt3\AutoIt3.exe C:\Programme\AutoIt3\mein script.au3" /n')
07/20/2009 17:23 felixli93#5
hmm, sieht schonmal gut aus, klappt bei mir aber trotzdem nicht... :(
hier gibt die AutoIt3.exe zwar keinen Error zurück, aber der "Run"-Befehl setzt @error auf 1...

klappt das bei dir so? und was soll das /n bewirken?

//edit:
:facepalm:
mit ShellExecute klappt es natürlich, weil dort ein extra parameter für die parameter für die programme zur verfügung steht, anders als bei "run".

So funktioniert es:
Code:
ShellExecute ("C:\Programme\AutoIt3\AutoIt3.exe", '"C:\Programme\AutoIt3\mein script.au3"')
ohne die beiden ' würde es aber auch nicht funktionieren.
Liegt wohl daran, dass die AutoIt.exe den Dateinamen in einem String braucht; dafür garantieren die beiden ', weil sie den String nochmal in einen String fassen...

trotzdem würde mich brennend interessiereren, wie man es mit "Run" gelöst bekommt...

//Edit²-.-
Code:
Run ("C:\Programme\AutoIt3\AutoIt3.exe " & '"C:\Programme\AutoIt3\mein script.au3"')
hätte ich drauf kommen können

#vote 4 close
07/20/2009 18:43 Frezee#6
Hmm dann gibts vielleicht noch die Möglichkeit:

$String1 = "C:\Programme\AutoIt3\AutoIt3.exe C:\Programme\AutoIt3\mein script.au3"
$String2 = "/n"

Run($String1 & String2)
07/20/2009 18:56 felixli93#7
Quote:
Originally Posted by Frezee View Post
Hmm dann gibts vielleicht noch die Möglichkeit:

$String1 = "C:\Programme\AutoIt3\AutoIt3.exe C:\Programme\AutoIt3\mein script.au3"
$String2 = "/n"

Run($String1 & String2)
dann wäre '$String1 & $String2' aber dasselbe wie "C:\Programme\AutoIt3\AutoIt3.exe C:\Programme\AutoIt3\mein script.au3/n", und das geht natürlich ebenso wenig...

aber egal, problem wurde ja gelöst, die angabe der datei muss in einem "doppelstring" erfolgen.