run mit start und Anfführungszeichen

  • Hallo!

    Zuerst einmal: Es ist kein Problem im herkömmlichen Sinn, eher ein "Aha" da hat sich möglichweise was verändert....

    Um was geht es: Mein letztes kleine Script hat einen run-Befehl der auf den einen oder andern Rechner nicht ausgeführt wurde. Nachdem ich den Fehler (kein Syntax-Fehler) eingegrenzt habe bin ich auf etwas sehr eigenartiges gestoßen: habe ich den absoluten Pfad mit der Programmdatei unter Anführungszeichen wird das Programm nicht gestartet!

    Beispiel:

    $start = '"c:\Program Files\Notepad++\notepad++.exe"'

    run ('cmd /c ping 127.0.0.1 /n 2 & start ' & $start, "", @sw_hide)


    Das Verhalten kann ich auch auf der Commandline nachstellen, es geht nur ein Konsolen-Fenster auf - warum das auf einmal so ist kann ich nicht sagen.

    Ich habe mir jetzt beholfen statt dem start ein call zu verwenden, aber falls wer über so ein Problem fällt sollte unbedingt den Aufruf überprüfen!

    lg

    Racer

    PS: Fall das Thema hier nicht rein passt bitte verschieben

  • Gib mal start /? in der Kommandozeile ein.
    Dort erhälst du dann die Syntax vom Start-Befehl.
    Interessant ist dort der 1. Parameter welcher optional ist: der Titel.
    Dieser wird in Anführungszeichen gesetzt.
    Heißt also: Wenn der erste Parameter des Start-Befehles in Anführungszeichen steht, dann geht der Befehl davon aus, dass hiermit der Titel gemeint ist.

    Da Notepad++ gar kein Kommandozeilentool ist, stellt sich die Frage, warum du es nicht direkt aufrufst sondern den Umweg über start?

  • Hallo AJ

    Zuerst zu Deiner Frage: Notepad++ war nur als Bespiel gedacht. Eigentlich war das eine Funktion im AutoIt _selfupdate. Damit kann das Programm überprüfen ob eine neue Version vorhanden ist, startet dann eine Kommandozeile (Batchjob geht nicht, da wir Applocker im Einsatz haben und ein Benutzer das nicht ausführen darf) mit "kurz warten" , "copy programm", "starte Programm".Dazu muss ich aber einen neuen Prozess generieren, keinen Subprozess und daher verwende ich eben start. Das AutoIt-Programm beendet sich (exit) solange das "ping" läuft.

    Da das Programm auf dem Desktop kommt und es aber verschiede Pfade gibt (c:\users\username\desktop, c:\users\username\one - drive\desktop, redirektet am Terminalserver) muss ich sicherstellen das bei einem Leerzeichen im Pfad das auch funktioniert. Daher setzt ich den Pfad inkl. Programmnamen unter Anführungszeichen.

    Das mit dem "Titel" hat mich zum Nachdenken und Experimentieren gebracht: Es scheint wirklich so das der erste Parameter der unter Anführungszeichen kommt als "Titel" interpretiert wird. Ich bilde mir ein das war bis vor kurzen nicht so.

    Verwende ich "start.exe "Titel" "c:\program files\notepad++\notepad++.exe" funktioniert es wieder. Das Gute daran: der "Titel" ist dem Windowsprogramm egal.
    Das Eigenartige ist nur: gebe ich den Pfad ohne Anführungszeichen an (bei Pfaden ohne Leerschritt) funktioniert das ohne Probleme.

    Ich werde künftig auf Nummer sicher gehen und immer einen Titel angeben!

    lg
    Racer

  • Hallo Racer ,

    Ich bilde mir ein das war bis vor kurzen nicht so.

    der start-Befehl verhält sich wie von AspirinJunkie beschrieben schon mindestens seit Windows XP SP3 so.

    start.exe "Titel" "c:\program files\notepad++\notepad++.exe"

    "Titel" darf auch eine leere Zeichenfolge sein, also "".

    Das Eigenartige ist nur: gebe ich den Pfad ohne Anführungszeichen an (bei Pfaden ohne Leerschritt) funktioniert das ohne Probleme.

    Das ist nicht eigenartig, sondern eine für die meisten Befehle geltende Eigenart ;) der Eingabeaufforderung von Windows.

    Ich werde künftig auf Nummer sicher gehen und immer einen Titel angeben!

    Damit fährst du sicherlich gut. Ich mache das schon lange so, auch wenn ich kaum mehr Batchele.


    Gruß, fee

  • Vielen Dank für Eure Mühe und Aufwand.

    Wahrscheinlich habe ich bis jetzt immer nur Programme ohne Leerschritt im Pfad/Dateiname gehabt. Da bildet man sich bald was ein das es immer so ist - oder es liegt am Alter das man schon was verwechselt?:Face:

    Aber schön zu sehen das hier noch wer ein Windows NT3.51 hat....

    lg
    Racer

  • Das ist nun ein Wort, welches ich so noch nicht kannte obwohl es dem Klang nach 100 Jahre älter zu sein scheint als ich selbst...

    :rofl: ... ja hört sich nach einem Kontext der ersten Schreibmaschinen an. Find' ich aber gut Racer 😇 .

  • Kann auch eine Fehlerinnerung sein, aber ich meine auch diesen Begriff in meinem Schreibmaschinenkurs (vor 45 Jahren) gehört zu haben. ;)

    echt? 45 Jahre? ....da können wir bald ein Rollator-Rennen machen ^^

    Also bei mir in Österreich/Wien kennt man den Begriff Leerschritt schon....ich muss ja manchmal auch den Chefs meines Chefs was erklären oder präsentieren....da muss man immer sehr einfache (kindertaugliche) Begriffe verwenden sonst verstehen die Folienkritzler nur Bahnhof:)

    lg

    Racer

  • Dann Grüße nach Österreich 👋 .

    ...da können wir bald ein Rollator-Rennen machen ^^

    😂

    ...da muss man immer sehr einfache (kindertaugliche) Begriffe verwenden sonst verstehen die Folienkritzler nur Bahnhof :)

    Jap, bin da völlig bei dir 😂 . "Folienkritzler", hervorragend :rofl: .