Zum Inhalt springen

Batch -> Programme Starten


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben (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 von zet
Geschrieben (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.exe

kö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 von Crash2001
Geschrieben

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 ""

Geschrieben

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? :D) der Meinung das man VBS und batch getrost ignorieren kann, und 100% powershell nutzen sollte?

Lg

Zet

Geschrieben

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).

Geschrieben

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.

Geschrieben (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 von zet
Geschrieben

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.

Geschrieben

@SilentDemise

Hier habe ich aber nirgends Daten als Klartext reingeschrieben oder? No offense, nur das ichs nicht überlesen hab :P

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

Geschrieben

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).

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...