Wie Batch nach Programmende starten?
Hallo zusammen. Ich habe die Sufu schon benutzt, leider komme ich nicht wirklich weiter.
Ich habe einen Ipod den ich nicht mit iTunes nutzen möchte. Hierzu verwende ich YamiPod. Anders geht es leider nicht.
Das einzige was YamiPod fehlt ist der Auswurfbutton.
Ich sollte folgendes möglich machen. Nur wie???
1. Wenn ich den Pod einstecke, soll er ein bestimmtes Verzeichnis auf %systemdrive% kopieren.
2. Wenn das erledigt ist soll YamiPod starten.
3. Wenn ich dann YamiPod beende soll nach einer gewissen Zeit eine Batch die in dem in 1. kopierten Verzeichniss befindet starten. Mit dieser Batch werfe ich den Ipod sicher aus.
Ich muß den Umweg über die lokale HDD machen, weil wenn ich die batch direkt vom Ipod starte diese nicht läuft. Wie auch, säge ja den eigenen Ast ab.
Villeicht kann mir das Forum mit diesem Problem helfen.
Kai
Ich habe einen Ipod den ich nicht mit iTunes nutzen möchte. Hierzu verwende ich YamiPod. Anders geht es leider nicht.
Das einzige was YamiPod fehlt ist der Auswurfbutton.
Ich sollte folgendes möglich machen. Nur wie???
1. Wenn ich den Pod einstecke, soll er ein bestimmtes Verzeichnis auf %systemdrive% kopieren.
2. Wenn das erledigt ist soll YamiPod starten.
3. Wenn ich dann YamiPod beende soll nach einer gewissen Zeit eine Batch die in dem in 1. kopierten Verzeichniss befindet starten. Mit dieser Batch werfe ich den Ipod sicher aus.
Ich muß den Umweg über die lokale HDD machen, weil wenn ich die batch direkt vom Ipod starte diese nicht läuft. Wie auch, säge ja den eigenen Ast ab.
Villeicht kann mir das Forum mit diesem Problem helfen.
Kai
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 103745
Url: https://administrator.de/contentid/103745
Ausgedruckt am: 26.11.2024 um 08:11 Uhr
19 Kommentare
Neuester Kommentar
auch hier ist AutoIT erste Wahl ...
verbunden mit einem Tasklist Befehl, wenn das Programm beendet ist startet die Batch ...
ganz einfach ..
verbunden mit einem Tasklist Befehl, wenn das Programm beendet ist startet die Batch ...
ganz einfach ..
Hallo Speedygonsales,
wie wäre es denn hiermit, musst nur noch deine Pfade und den Namen des Prozesses (siehe Taskmanager) eintragen.
Die Batch prüft alle 10 sekunden ob der Prozess deines Programms noch läuft, wenn er beendet ist geht´s weiter.
Allerdings benötigst du auf dem PC auf dem die Batch ausgeführt werden soll das Programm tasklist.exe im system32 ordner!
http://www.computerhope.com/download/winxp/tasklist.exe
Poste mal bitte die Batch mit der du den Ipod auswirfst.
Der inhalt kann übrigens in das unten stehende Skript mit eingebaut werden.
Du kannst die Batch mit der der Ipod entfernt wird aus dieser Batch heraus erzeugen.
Somit haste nur eine Datei die du ausführen musst - Stichwort Ast absägen.
Es wäre sogar möglich die Batch direkt beim anschliessen des Ipod per Autostart auszuführen.
Gruß Milo
wie wäre es denn hiermit, musst nur noch deine Pfade und den Namen des Prozesses (siehe Taskmanager) eintragen.
Die Batch prüft alle 10 sekunden ob der Prozess deines Programms noch läuft, wenn er beendet ist geht´s weiter.
Allerdings benötigst du auf dem PC auf dem die Batch ausgeführt werden soll das Programm tasklist.exe im system32 ordner!
http://www.computerhope.com/download/winxp/tasklist.exe
Poste mal bitte die Batch mit der du den Ipod auswirfst.
Der inhalt kann übrigens in das unten stehende Skript mit eingebaut werden.
@echo off
copy x:\xyz %systemdrive%\
start /separate c:\programme\deinprogramm.exe
ping -n 20 127.0.0.1 >nul
:start
cls
set ProgEXE=deinprozess.exe
TaskList /FI "IMAGENAME eq %ProgEXE%" 2>NUL | Find "%ProgEXE%" >NUL
IF ERRORLEVEL == 1 goto :weiter
:loop
echo Pruefe aktiven Prozess
ping -n 10 127.0.0.1 >nul
goto :start
:weiter
start x:\deinebatch.bat
exit
Du kannst die Batch mit der der Ipod entfernt wird aus dieser Batch heraus erzeugen.
Somit haste nur eine Datei die du ausführen musst - Stichwort Ast absägen.
Es wäre sogar möglich die Batch direkt beim anschliessen des Ipod per Autostart auszuführen.
Gruß Milo
Hallo speedygonsales,
Also unter XP Pro und Vista (konnte nur Ultimate testen) ist die tasklist.exe standartmäßig im system32 ordner untergebracht.
Unter XP Home leider nicht.
Du kannst die Datei aber in deinen Tools Ordner auf dem Ipod ablegen, beim start der batch wird dann geprüft ob es die datei auf dem System gibt, falls nicht wird sie eben kopiert!
Das selbe könnte man mit der deveject.exe anstellen, somit musst du also nicht erst was installieren (abgesehen von Yamipod).
Der Grund weshalb du eine Fehlermeldung bei der eject.bat bekommen hast ist einfach:
Scheinbar kann während eine datei ausgeführt wird (hier das Hauptprogramm) das Gerät nicht entfernt werden.
Habe das Problem aber gelöst, (denk ich ) indem die eject.bat nach ihrer erzeugung in einem seperaten 16-bit Speicherbereich gestartet wird und das Hauptprogramm zuvor geschlossen werden kann.
Hier also mal die Überarbeitete Version:
Die eject.bat wird nun aus der batch erzeugt und unter \ipod\eject.bat aufgerufen.
Gruß Milo
Also unter XP Pro und Vista (konnte nur Ultimate testen) ist die tasklist.exe standartmäßig im system32 ordner untergebracht.
Unter XP Home leider nicht.
Du kannst die Datei aber in deinen Tools Ordner auf dem Ipod ablegen, beim start der batch wird dann geprüft ob es die datei auf dem System gibt, falls nicht wird sie eben kopiert!
Das selbe könnte man mit der deveject.exe anstellen, somit musst du also nicht erst was installieren (abgesehen von Yamipod).
Der Grund weshalb du eine Fehlermeldung bei der eject.bat bekommen hast ist einfach:
Scheinbar kann während eine datei ausgeführt wird (hier das Hauptprogramm) das Gerät nicht entfernt werden.
Habe das Problem aber gelöst, (denk ich ) indem die eject.bat nach ihrer erzeugung in einem seperaten 16-bit Speicherbereich gestartet wird und das Hauptprogramm zuvor geschlossen werden kann.
Hier also mal die Überarbeitete Version:
@echo off
if not exist %windir%\system32\tasklist.exe copy \tools\tasklist.exe %windir%\system32\
xcopy \tool %systemdrive%\ipod /y
start /separate YamiPod.exe
ping -n 20 127.0.0.1 >nul
:start
cls
set ProgEXE=YamiPod.exe
TaskList /FI "IMAGENAME eq %ProgEXE%" 2>NUL | Find "%ProgEXE%" >NUL
IF ERRORLEVEL == 1 goto :weiter
:loop
echo Pruefe aktiven Prozess
ping -n 10 127.0.0.1 >nul
goto :start
:weiter
REM eject.bat wird erzeugt
del %systemdrive%\ipod\eject.bat
echo ping -n 5 127.0.0.1 >>%systemdrive%\ipod\eject.bat
echo %systemdrive%\ipod\deveject "-EjectId:USB\VID_05AC&PID_1260\000A270019E0172A" >>%systemdrive%\ipod\eject.bat
REM ping dient hier als kurze pause zwischen beenden des Hauptprogramms und starten der eject funktion
(läuft leider sichtbar ab)
start /separate %systemdrive%\ipod\eject.bat
exit
Die eject.bat wird nun aus der batch erzeugt und unter \ipod\eject.bat aufgerufen.
Gruß Milo
Was passiert denn wenn du die unter %systemdrive%\ipod\ erzeugte eject.bat direkt startest?
Ist das Hauptprogramm (also die Batch) denn bereits geschlossen wenn eject.bat gestartet wird?
Gruß Milo
Ist das Hauptprogramm (also die Batch) denn bereits geschlossen wenn eject.bat gestartet wird?
Gruß Milo
Komische sache, was passiert denn wenn du in ner cmd den startbefehl einzeln angibst?
Versuche das bitte mal.
also start /separate %systemdrive%\ipod\eject.bat eingeben.
Wie verhält sich deveject, wenn der ipod nicht angeschlossen ist? Gleiche Fehlermeldung?
Gruß Milo
Versuche das bitte mal.
also start /separate %systemdrive%\ipod\eject.bat eingeben.
Wie verhält sich deveject, wenn der ipod nicht angeschlossen ist? Gleiche Fehlermeldung?
Gruß Milo
Kommt mir vor als könnte deveject das laufwerk nicht trennen, weil darauf noch was ausgeführt wird.
Setzte die zeitverzögerung mit dem ping in Zeile 28 mal testweise auf -n 30
Was anderes fällt mir auf die schnelle nicht ein.
Welches Betriebssystem verwendest du denn momentan?
Gruß Milo
Setzte die zeitverzögerung mit dem ping in Zeile 28 mal testweise auf -n 30
Was anderes fällt mir auf die schnelle nicht ein.
Welches Betriebssystem verwendest du denn momentan?
Gruß Milo