Anzeige

Am Puls von Microsoft

Anzeige

[gelöst] Programm in den Vordergrund aufrufen per Batch

Du musst trotzdem angeben wo die Konsole hingehen soll!
Die Datei rufst du zwar da auf, aber in der Konsole steht dann meistens C:/Windows/System32, was bedeutet du musst denn Pfad eingeben wo ich cd C:/Windows stehen habe!

Ich rate dir (Nicht böse nehmen) die paar Grundlagen anzueignen wenn du schon mit CMD Arbeiten möchtest :)

PS: Die Batch Datei kann sein wo die will, anhand der Pfades weiß die Datei was und wo die das öffnen soll (Und auch wie Call/Start)!
 
Anzeige
das Frage ich mich auch. Muß doch einen Hintergrund haben, ansonsten könnte man doch den Editor auch per Verknüpfung auf dem Desktop starten.
 
Du musst trotzdem angeben wo die Konsole hingehen soll!
ja genau, aber eben relativ. Also relativ vom Ausführungspfad der Batch gebe ich das an. Kannst du leicht selbst testen, indem du einen Ordner erstellst mit einer batch2 mit inhalt echo hallo & einer mit inhalt call batch2. Dann wird ja hallo ausgegeben. Also ist keine absolute Pfadangabe notwendig. Also wo auch immer ich den Ordner mit allem Notwendigem hinkopiere - er funktioniert.. portable also.
 
Die Konsole ist trotzdem woanders als man selbst ist z.B habe ich eine CMD auf mein Desktop der immer in System32 ist!

Mit mein Beispiel funktioniert es aber so wie du es haben möchtest!
Gebe einfach den Pfad an, und du wirst sehen egal wo die Batch Datei liegt es funktioniert :)

PS: Du musst nicht Call nutzen sondern start als Anfang!
und zum Schluss Exit damit die Konsole geschlossen wird! (Geht nur mit start und nicht mit call)!
Und wo ist jetzt das Problem? das es immer noch net geht? weil dann machst du was Falsch :)

Teste dann doch einfach den Code von mir oben, damit du es auch siehst das es klappt xD

_____

Sonst würde ICH mir so ein Tool selbst Programmieren was Sachen Öffnet (Wie du es gerne hättest) xD
 
aha, dankesehr. Genau das war mein erster Versuch - wie in Post1 ja beschrieben. Dort hatte es nicht funktioniert. Muss ich nochmal weiter testen. Habe es jetzt aber so übernommen.

Nicht ganz passend zum Thema.. vielleicht sollte ich ein neues erstellen. Aber weist du zufällig, wie ich während der Laufzeit von edit.exe das CMD-Fenster unsichtbar mitlaufen lasse & nach Beendigung von edit.exe die Batch weiterfortführe?

Code:
@echo off
start "Edit" "edit.exe"
echo edit wurde beendet
Exit
 
Julia :)))))))))))))))))))))

Ich habe dein Code gerade genommen und getestet!
Und bei mir Funktioniert es wunderbar und die Konsole schließt sich sofort nach dem Programm Start!

Mein sieht so aus:

Code:
@echo off
cd C:/Windows
start "Edit" "notepad.exe"
echo edit wurde beendet
Exit

BITTE BITTE übernehme denn einfach mal zum Testen 1 zu 1!
Pack den Code in einer Datei und Speicher diese in .bat ab!

https://www.thomas-krenn.com/de/wiki/Cmd-Befehle_unter_Windows
 
Und das mit denn unsichtbaren Fenster ist überall so^^ das sind Grundlagen von Programmierer :)
Wiegesagt call oder start!

Verwechsle das jetzt nicht mit dem was auf der i-net seite steht weil da steht aufruf einer Batch, aber call wird anders verwaltet als Start :)
 
ja, danke Dir b4nan1. Habe den Code übernommen, aber es öffnet sich ein CMD-Fenster(welche sich auch wieder schliesst), aber es soll ja kein Fenster geöffnet werden.

Wenn du Pause unten dranhängst(vorm exit), dann siehst du das Fenster auch länger. Und bei mir soll es ja so sein, dass während edit.exe läuft die batch noch weiter ausgeführt werden soll. Und wenn edit.exe geschlossen wird durch mich, dass die batch dann weiter abgearbeitet werden soll -> alles ohne CMD-Fenster.
 
Ok dann erkläre ich dir jetzt dazu mal was :)

1. Das CMD befindet sich in System32 Ordner unter Windows, was für denn CMD der eingangs Pfad ist! (C:/Windows/System32/)
2. Für das was du machen willst musst du (Call) nutzen da du ja möchtest das dein CMD die Kontrolle haben soll über das Programm was du gestartet hast. Deswegen ist das CMD Fenster auch immer vorhanden und für dich sichtbar, und wenn du das Programm schließt arbeitet er auch weiter!
Weil das CMD Fenster auf das Programm warten muss (Weil die sich ein Prozess Teilen)!
Daher geht das nicht wie du es möchtest, weil die Mechanik von Windows da nicht mit macht!
Das sind wiegesagt Grundlagen von Programmieren und sowas kannst du nicht wissen, daher versuche ich es dir zu erklären wie es funktioniert!

Ist es genauso wie als würde das Programm sich selbst versucht zu Löschen (Geht auch nicht), daher werden z.B Updater in ein eigenen Prozess geschrieben weil man von Außerhalb das Löschen kann!

Um es auf den Punkt zu kommen, es Funktioniert nicht wie du es haben möchtest, aber vielleicht ist es auch besser das es noch einer bestätigt der damit auch auskennt (Prozess Ablauf etc..)!
 
vielleicht sollte Julia mal den Ablauf der Batch komplett erklären.
Warum soll das CMD-Fenster während Edit.exe weiter offen bleiben, was soll danach passieren, ansonsten kann es doch geschlossen werden. Soll ein weiteres Programm aufgerufen werden. Einmal wurde "portabel" erwähnt, hier könnte man evtl. Pfade aus den Umgebungsvariablen entnehmen.
Es ist mir nicht klar was diese Batch alles machen soll?
 
Batch im Ordner soll Programm starten im Vordergrund & das CMD-Fenster schliessen.
Dir ist die Funktionsweise der CMD bekannt?
Die Batch in der CMD ist keine Ausführunbare Exe, nur ein Interpreter.
Wenn die exe durch die bat gestartet ist, und im Vordergrund steht, hat die Batch ihren Zweck erfüllt und schließt.
Wenn die noch weiter genutz werden soll, ist es ja die Aktive Anwendung und deshalb dann im Vordergrund.
Entweder das eine oder das andre!
Ist selbst bei Exe so, das manche ( damit es weitergeht Fenster) z:b,. das der Benutzer Konten Steuerung hinter dem liegen und erst zu sehen sind wenn du das exe Install Fenster minimierst.
Kommt man oft erst drauf weil`s nicht weitergeht mit der Installation ohne das " Weiter " zudrücken.
Ist deshalb so, weil bestimmte Prozesse, wie die Install exe, ja die Laufende Prioritäre Anwendung ist, die Bestätigung nur ein unter Prozeß.
Viele solcher Anwendungen sind noch für kleine Auflösungen mit gemacht, wenn die da nebeneinander z.B, bei 480 x 660 auf dem Desktop lägen, wären die außerhalb des sichtbaren Bereichs, ,oder nur teilweise und ab´geschnitten zu sehen.
Es gab nicht immer schon Monitore und Auflösungen von 1920 x 1080 und mehr.
Das ist b ei Windows immer abwärts kompatibel, deshalb ist ja auch das CMD Fenster auf dem Desktop bei großer Auflösung so klein!
 
Das Problem ist auch das sie einen Memory Leak bekommen würde, da sie nicht die Adressen Freigegeben hat!
 
jo o.k. - schade. Also nochmal zudem was die batch machen soll, auch wenn es nicht lösbar ist wie ja jetzt mir deutlich ist. Während edit.exe ausgeführt wird wird mit edit.exe gearbeitet & eine Datei erstellt. Nachdem edit.exe beendet wird, soll eine temporäre Datei die beim Arbeiten mit edit.exe anfällt gelöscht werden.

Wenn die exe durch die bat gestartet ist, und im Vordergrund steht, hat die Batch ihren Zweck erfüllt und schließt.
Wenn die noch weiter genutz werden soll, ist es ja die Aktive Anwendung und deshalb dann im Vordergrund.
Also sie muss ja nicht schliessen - das klappt ja auch. Und dann ist auch die exe im Vordergrund. Man arbeitet dann mit der exe & die batch wartet solange.
 
ist bekannt wo die temporäre Edit-Datei abgelegt wird?
Ehrlich gesagt, ist mir noch nie aufgefallen dass Edit/Notepad eine temporäre Datei anlegt.
Außerdem sollte ein temp-Datei bei beenden von Edit/Notepad automatisch gelöscht werden.
 
Julia das ist die Arbeit vom Entwickler sich um sowas zu kümmern, das fällt meist bei der Funktion Close an bzw Dispose + Close!
 
Temporäre Dateien fallen bei jeder Arbeit von Programmen an, so wie auch Log Dateien.
Diese werden in TMP oder temp Ordner von Windows oder in speziellen in Unterordner von Anwendungen ( meist in C:\ ProgramData ) oder gar im User Verzeichnis befindlichen Ordern ( C:\ Benutzer / dein Name / AppData / Roaming ) von Programmen abgelegt.
Grad diese Log sind oft wichtig, wenn mal was geändert oder das Programm entfernt werden soll.#
Werden jetzt dies TMP Oder temp Ordner " zu " gründlich gereinigt.... dann können viel nicht deinstalliert, aber auch nicht neu installiert werden, weil diese Datei fehlt:
Im schlimmsten Fall kommt Bild 2:
 

Anhänge

  • Kein Modul.jpg
    Kein Modul.jpg
    38,6 KB · Aufrufe: 220
  • Win loswerden.jpg
    Win loswerden.jpg
    15,1 KB · Aufrufe: 242
Wenn es dir nur um die Temp geht, dann würde ich mir eine schleife mit ein Timer schreiben der jedes mal überprüft ob die Datei vorhanden ist, und wenn ja soll er die Löschen.
Wenn das nicht geht, wird die gerade benutzt und Fertig :)

PS: vielleicht setze ich mich mal an sowas rann wenn ich Langweile habe, dann kann man Datei eingeben + Pfad und die werden überprüft, somit wäre dein Temp Problem gelöst und vielleicht das auch von anderen :)
 
hey danke, b4nan1. Spare Dir bitte die Arbeit. Es soll ohnehin nichts eingegeben werden. Alles von selbst ablaufen. Und während der Ausführung von edit.exe soll die temporäre Datei auch nicht angefasst werden - solange ist sie noch wichtig!

Ich löse das Problem jetzt anders. Dazu benötige ich dann VBS, damit kenne ich mich aber so überhaupt gar nicht aus. Mit Basic habe ich ja schon hier und mal was gelöst. Was mir noch fehlt, ist dann mit VBS eine Datei umzubenennen, dann wäre das Problem komplett aus der Welt :) -> http://www.drwindows.de/windows-8-allgemein/84759-vbs-dateiendung-umbenennen-aber-nur-temporaer.html#post788289
 
Visual Basic ist eine NET-Framework Sprache, da rate ich dir auch Grundlagen anzueignen!
Davon gibt es haufen, weil wennn du damit was machen möchtest musst du dich auch ein wenig auskennen!
Ich Persönlich kann Visual Basic nicht, aber dafür andere xD
 
Anzeige
Oben