zet Geschrieben 7. Dezember 2012 Geschrieben 7. Dezember 2012 Mahlzeit liebe Community , Ich habe folgendes Problem: Ich möchte über eine Bash vordefinierte Programme starten. Das ist mein erstes Skript, und es läuft leider garnicht wie es soll. Es sind 6 auszuführende Programme definiert, wovon die ersten 3 auch funktionieren, allerdings bringt er bei den folgenden 3 eine Fehlermeldung er würde das Programm nicht finden. Sieht ca so aus: :main echo Um das Menu zu benutzen gib eine Nummer an und drucke Enter. echo. echo 1. Prog1 echo 2. Prog2 echo 3. Prog3 echo 4. Prog4 echo 5. Prog5 echo 6. Prog6 echo 7. Alle ausführen echo 0. Exit set /p menu=)) if not defined menu goto main if %menu%==1 ( set menu= start Prog1.exe goto main ) if %menu%==2 ( set menu= start Prog2.exe goto main ) if %menu%==3 ( set menu= start Prog3.exe goto main ) if %menu%==4 ( set menu= cd C:\Pfad zum Programm // Hier habe ich probiert, ob es vll den Pfad nicht automatisch findet. start Prog4.exe goto main ) if %menu%==5 ( set menu= cd Desktop start Prog5.exe goto main ) if %menu%==6 ( set menu= start Prog6.exe goto main ) if %menu%==7 ( set menu= start Prog1.exe start Prog2.exe start Prog3.exe start Prog4.exe start Prog5.exe start Prog6.exe goto main ) if &menu%==0 exit Woher bzw wie holt sich das File eigentlich die Pfade? Wann ist es nötig den Pfad anzugeben, vermutlich bei Netzlaufwerken o.ä. ? Wie verhält es sich, wenn eines der programme nicht installiert wäre, sondern nur eine blanke .exe? Hoffe ihr könnt hier meinen Horizont erweitern. lg Zet Zitieren
Crash2001 Geschrieben 7. Dezember 2012 Geschrieben 7. Dezember 2012 Du könntest auch den absoluten Pfad angeben beim Programmaufruf. Also z.B. so: start c:\Programme\testprgramm\programm1.exe Der Pfad, den "sich das Programm holt" ist im Normalfall (falls nicht anders angegeben in der .bat-Datei) der Pfad, in dem die .bat-Datei ausgeführt wird. Wieso es bis zu Programm 4 jedoch geht, aber ab Programm 5 nicht mehr, weiß ich allerdings auch nicht. Zitieren
zet Geschrieben 7. Dezember 2012 Autor Geschrieben 7. Dezember 2012 (bearbeitet) Ersteinmal Danke für die Antwort, Wie handhabe ich die Leerzeichen im Pfadnamen? z.B C:\Program Files (x86)\Internet Explorer <-- in diesem pfad ist iexplore.exe == start C:\Program Files(x86)\InternetExplorer iexplore.exe == start C:\Program Files(x86)\InternetExplorer\iexplore.exe Was wäre korrekt? Werde noch ein wenig Rumfrimeln, wenn ich eine Lösung gefunden habe geb ich's durch. Kann man hier selber Themen als Gelöst markieren? Lg Zet Bearbeitet 7. Dezember 2012 von zet Zitieren
Crash2001 Geschrieben 7. Dezember 2012 Geschrieben 7. Dezember 2012 (bearbeitet) Weder noch. Einfach den kompletten Ausdruck in Ausführungszeichen setzen. Also z.B. so:start "C:\Program Files(x86)\Internet Explorer\iexplore.exe" [edit] Alternativ geht auch die Kurzschreibweise (8+3) wie beim alten DOS. Also start C:\Progra~1\Intern~1\iexplore.exekönnte auch funktionieren. Wie genau die Abkürzung wäre, hängt aber von deiner Orderstruktur ab. Das erste Verzeichnis, auf das es zutrifft bekommt ~1 hinten dran, das zweite ~2, u.s.w. ... Ich bin mir aber aktuell nicht sicher, nach dem wievielten zeichen das ~ kommt. Nach dem 6ten, 7ten oder 8ten... [/edit] Bearbeitet 7. Dezember 2012 von Crash2001 Zitieren
Blueshark Geschrieben 7. Dezember 2012 Geschrieben 7. Dezember 2012 Beim Internet Explorer könnte man aber ähnlich wie bei Firefox auch ne kurzschreibweise nutzen. Keine Ahnung ob diese irgendwelchen Voraussetzungen einhergehen, aber das hat bisher bei allen PCs geklappt bei denen ich es probiert habe. InternetExplorer -> iexplore firefox -> firefox Evtl. hast du es ja bei den Programmen auch so gemacht und deswegen funktionierten die ersten so. Bei anderen Programmen ist es dann aber besser den gesamten Pfad zu nutzen und wie schon geschrieben in "" Zitieren
SilentDemise Geschrieben 7. Dezember 2012 Geschrieben 7. Dezember 2012 das geht bei den programmen, deren pfade in den umgebungsvariablen definiert sind. Mein üblicher Satz noch an dieser Stelle, warum nicht Powershell? ;-) Zitieren
zet Geschrieben 7. Dezember 2012 Autor Geschrieben 7. Dezember 2012 Genau wie du gesagt hast, hab ich es gemacht blueshark, aber bei den anderen waren sie scheinbar nicht in den Umgebungsvariablen. Experementiere gerade mit den Pfadangaben, vielen Dank für den Tipp mit den Tilden, war mir bisher nicht bekannt. Warum nicht Powershell? - Naja ist wie gesagt mein erster Gehversuch .. Und eigentlich habe ich Job-Technisch als azubi(AE'ler) momentan absolut garnichts damit am hut, aber wer weiß was kommt.. Wenn du ein powershell-fan bist, kannst du mir ja evtl. gleich meine Frage beantworten: Bist du(dutzt man sich hier? ) der Meinung das man VBS und batch getrost ignorieren kann, und 100% powershell nutzen sollte? Lg Zet Zitieren
zet Geschrieben 7. Dezember 2012 Autor Geschrieben 7. Dezember 2012 Sorry für den Doppelpost, aber finde die Edit-Funkion nicht?:confused: start "C:\*******\*******\Desktop\Putty.exe" Bei allen Programmen sieht das so ähnlich aus, also die Pfade passen scheinbar schonmal. Allerdings öffnet sich nur ein CMD-Fenster in der interessanterweiße als Titel der richtige Pfad steht, im fenster selbst allerdings nur ein Pfad zu meinem Desktop(Wo die Batch-Datei liegt). Zitieren
SilentDemise Geschrieben 7. Dezember 2012 Geschrieben 7. Dezember 2012 Kurze Antwort: ja. Lange Antwort: It depends. alles was du in der Batch schreiben kannst, geht auch mit der Powershell. Powershell ist ein Ansatz, bei dem Microsoft selber hingeht und den Anspruch hat, in den aktuellen Produkten alle Features über die Powershell abzubilden. Größter Vorteil ist, dass die wichtigstens Verwaltungsaufgaben bereits als fertige CMDlets vorliegen. Zitieren
Crash2001 Geschrieben 10. Dezember 2012 Geschrieben 10. Dezember 2012 Willst du nur, dass Putty selber startet, oder soll dort direkt etwas gemacht werden? Kommandozeilenparameter für Putty Zitieren
zet Geschrieben 10. Dezember 2012 Autor Geschrieben 10. Dezember 2012 (bearbeitet) @Crash2001 Momentaner Stand ist das ich es "schaffe" Putty via batch zu starten und einzuloggen, allerdings kann ich keine Befehle die danach ausgeführt werden hinzufügen. also via -m Befehle.txt beispielsweiße. Sobald ich das -m Befehle in die Batch-Datei schreibe, startet Putty und verschwindet sofort wieder. Ziel ist es das sich automatisch in putty eingeloggt, und in einen gewissen ordner wechselt. In der batch datei steht der Login, dann -m Befehle.txt Danach folgt in der batch kein exit Sondern in der Befehle.txt cd somewhere exit ist das vom prinzip her richtig? Aktuelle Lage ist das das Batch-File was eine Auswahl bestimmte Programme zu starten lediglich ein neues CMD-Fenster öffnet und den Titel des Programm's trägt :main echo Um das Menu zu benutzen gib eine Nummer an und drucke Enter. echo. echo 1. Prog1 echo 2. Prog2 echo 3. Prog3 echo 4. Prog4 echo 5. Prog5 echo 6. Prog6 echo 7. Alles echo 0. Exit set /p menu=)) if not defined menu goto main if %menu%==1 ( set menu= start Prog1.exe goto main ) if %menu%==2 ( set menu= start "Pfad\Prog2" goto main ) if %menu%==3 ( set menu= start "Pfad\Prog3" goto main ) if %menu%==4 ( set menu= start "Pfad\Prog4" goto main ) if %menu%==5 ( set menu= cd Desktop start "Pfad\Prog5" goto main ) if %menu%==6 ( set menu= start "start "Pfad\Prog6"" goto main ) if %menu%==7 ( set menu= start Prog1 start "Pfad\Prog2" start "Pfad\Prog3" start "Pfad\Prog4" start "Pfad\Prog5" start "Pfad\Prog6" goto main ) if &menu%==0 exit Lg Zet //edit: Plink ist leider keine option Bearbeitet 10. Dezember 2012 von zet Zitieren
Crash2001 Geschrieben 11. Dezember 2012 Geschrieben 11. Dezember 2012 Sorry, aber ich weiß nur, dass man es per Script steuern kann. Wie das genau geht, habe ich selber noch nie ausprobiert, da ich bisher nie die Notwendigkeit dazu sah. Ich gehe aber mal davon aus, dass es sich selber beendet, wenn es in den Pfad gewechselt ist, da es dann ja alles erledigt hat, was es machen sollte. Keine Ahnung, ob es einen BEfehl gibt, der die Verbindung dann weiter offen hält. Hast du denn einen absoluten Pfad angegeben? Keine Ahnung, in welchem Verzeichnis das File standardmässig erwartet wird. Im Text steht, dass mehrere Zeilen wohl nicht mit jedem Server u.s.w. geht. Vielleicht unterstützt der Server es ja einfach nicht, da es als Angriff gewertet wird und schmeisst dich direkt raus. Zitieren
SilentDemise Geschrieben 11. Dezember 2012 Geschrieben 11. Dezember 2012 unabhängig davon: niemals logins unverschlüsselt in ein Textfile schreiben. NIEMALS. Zitieren
zet Geschrieben 12. Dezember 2012 Autor Geschrieben 12. Dezember 2012 @SilentDemise Hier habe ich aber nirgends Daten als Klartext reingeschrieben oder? No offense, nur das ichs nicht überlesen hab Natürlich hast du da recht, dass würde dann als nächstes anstehen, da habe ich leider auch noch keinerlei kentnisse, möglicherweiße bin ich das ganze falsch angegangen und hätte mir erst über solche Fälle Gedanken machen sollen. @Crash Danke für den Input. Ja habe die Absoluten PFade angegeben, die sind auch soweit korrekt. Server macht auch keine Probleme, Afugrund der Last bin ich auch der Meinung das die Programme nicht gestartet werden, denn eine mehrlast ist nicht zu erkennen. Wenn ich rausgefunden hab was das Problem ist, lass ich von mir hören. Lg Zet Zitieren
Crash2001 Geschrieben 13. Dezember 2012 Geschrieben 13. Dezember 2012 Nunja, sagen wir mal so... eine Last durchs starten von Putty, einloggen auf einem FTP-Server und Wechsel des Verzeichnisses auf dem FTp-Server würde man bei aktuellen Systemen wohl vermutlich gar nicht so wirklich sehen. Ich würde die Gegenseite überprüfen (oder mal einen kleinen FTP-Server aufsetzen, um damit zu testen, falls du keinen Zugriff auf die Logdatei des FTP-Servers haben solltest). Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.