Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Wie Batch nach Programmende starten?

Frage Entwicklung

Mitglied: speedygonsales

speedygonsales (Level 1) - Jetzt verbinden

10.12.2008, aktualisiert 12.12.2008, 9207 Aufrufe, 19 Kommentare

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
Mitglied: godlie
10.12.2008 um 14:23 Uhr
Also eine Lösung wäre folgende:
Einfach dein YamiPod per Batch starten, dadurch wird der Befehl welcher danach ausgeführt werden soll einfach danach hingeschrieben.
Probier das mal aus.

grüße
Bitte warten ..
Mitglied: 6741
10.12.2008 um 14:27 Uhr
auch hier ist AutoIT erste Wahl ...

verbunden mit einem Tasklist Befehl, wenn das Programm beendet ist startet die Batch ...

ganz einfach ..
Bitte warten ..
Mitglied: godlie
10.12.2008 um 14:29 Uhr
Ob ich das jetzt mit AutoIT oder gleich mit einer reinen batch mache ist auch nicht mehr als geschmackssache und ich brauch nicht auf die beendigung achten da die Stapelverarbeitung sowieso nur das nächste macht was dort stehen geschrieben steht.

Aber jedem das seine.
Bitte warten ..
Mitglied: speedygonsales
10.12.2008 um 16:03 Uhr
Nur zur Information. Dieser Vorgang muß ohne Installationen in irgendeiner Form funktionieren. Das einzige was auf den betreffenden Rechner kommt ist eben die Batch die das auswerfen startet. Wenn ich zu meinem Bekannten gehe hab ich keine Lust erst was installieren zu müssen.

Ich habe schon mit VBS gearbeitet. Kenn mich aber damit leiden nicht wirklich aus so das ich somit zu keinem Ergebnis komme. Der Vorgang wie in 1. und 2. definiert habe ich bereits am laufen. Würde mich aber freuen wenn ich das alles in eine Batch bzw Script bekomme.
Bitte warten ..
Mitglied: godlie
10.12.2008 um 16:13 Uhr
Ja und wie hast du Punkt 1 und Punkt 2 realisiert?
Woran scheiterts,dass du nach Punkt 2 einfach ein Start deines Yamipods machst und danach den Auswurf?
Bitte warten ..
Mitglied: 72648
10.12.2008 um 16:46 Uhr
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.

01.
@echo off 
02.
 
03.
copy x:\xyz %systemdrive%\ 
04.
 
05.
start /separate c:\programme\deinprogramm.exe 
06.
ping -n 20 127.0.0.1 >nul 
07.
 
08.
:start 
09.
cls 
10.
set ProgEXE=deinprozess.exe 
11.
  
12.
TaskList /FI "IMAGENAME eq %ProgEXE%" 2>NUL | Find "%ProgEXE%" >NUL 
13.
IF ERRORLEVEL == 1 goto :weiter 
14.
    
15.
:loop 
16.
echo Pruefe aktiven Prozess 
17.
ping -n 10 127.0.0.1 >nul 
18.
goto :start 
19.
 
20.
:weiter 
21.
 
22.
start x:\deinebatch.bat 
23.
exit 
24.
 
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
Bitte warten ..
Mitglied: speedygonsales
10.12.2008 um 19:47 Uhr
Hi Milo

Das ist bis jetzt der beste lösungsansatz. So hatte ich mir das in etwa gedacht.
Hier noch der befehl zum sicheren entfernen.

01.
%systemdrive%\...\deveject "-EjectId:USB\VID_05AC&PID_1260\000A270019E0172A"
Ist das Programm tasklist.exe eigentlich standardmäßig in XP und/oder Vista?

Wenn nein wie kann ich das Programm in den Ordner systen32 kpoieren? Speziel in Vista. Da bin ich immer daran gescheitert das ich vermutlich den Vorgang entweder bestätigen müsste bzw. als Administrator starten muß.

Kannst du mir die auch noch die möglichkeit einbauen das ich die eject.bat aus der o.g. Batch herraus erzeugt.

Thanks

Kai

:edit:

Habe die Batch wie folgt angepasst mit folgendem Ergebniss...

01.
@echo off 
02.
 
03.
xcopy \tool %systemdrive%\ipod /y 
04.
 
05.
start /separate YamiPod.exe 
06.
ping -n 20 127.0.0.1 >nul 
07.
 
08.
:start 
09.
cls 
10.
set ProgEXE=YamiPod.exe 
11.
  
12.
TaskList /FI "IMAGENAME eq %ProgEXE%" 2>NUL | Find "%ProgEXE%" >NUL 
13.
IF ERRORLEVEL == 1 goto :weiter 
14.
    
15.
:loop 
16.
echo Pruefe aktiven Prozess 
17.
ping -n 10 127.0.0.1 >nul 
18.
goto :start 
19.
 
20.
:weiter 
21.
 
22.
start %systemdrive%\ipod\eject.bat 
23.
exit
Soweit läuft alles wie gewünscht. Bis auf den aufruf der eject.bat. Da erhalte ich diese Meldung in der DOS Box:


F:\>C:\ipod\deveject "-EjectId:USB\VID_05AC&PID_1260\000A270019E0172A"
DevEject 1.0 2003 c't/Matthias Withopf

Ejecting '@usbstor.inf,%genericbulkonly.devicedesc%;USB-Massenspeichergerõt' [U
SB\VID_05AC&PID_1260\000A270019E0172A]...FAILED (23,6)
Error ejecting device USB\VID_05AC&PID_1260\000A270019E0172A, vetoed (15,6)!

F:\>

Die eject.bat läuft aber wunderbar wenn ich es direkt von HDD Starte.
Bitte warten ..
Mitglied: 72648
11.12.2008 um 13:54 Uhr
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:

01.
@echo off  
02.
 
03.
if not exist %windir%\system32\tasklist.exe copy \tools\tasklist.exe %windir%\system32\ 
04.
 
05.
xcopy \tool %systemdrive%\ipod /y  
06.
 
07.
start /separate YamiPod.exe  
08.
ping -n 20 127.0.0.1 >nul  
09.
 
10.
:start  
11.
cls  
12.
set ProgEXE=YamiPod.exe  
13.
TaskList /FI "IMAGENAME eq %ProgEXE%" 2>NUL | Find "%ProgEXE%" >NUL  
14.
IF ERRORLEVEL == 1 goto :weiter  
15.
 
16.
 
17.
:loop  
18.
echo Pruefe aktiven Prozess  
19.
ping -n 10 127.0.0.1 >nul  
20.
goto :start  
21.
 
22.
:weiter  
23.
 
24.
REM eject.bat wird erzeugt 
25.
del %systemdrive%\ipod\eject.bat 
26.
 
27.
echo ping -n 5 127.0.0.1 >>%systemdrive%\ipod\eject.bat 
28.
echo %systemdrive%\ipod\deveject "-EjectId:USB\VID_05AC&PID_1260\000A270019E0172A" >>%systemdrive%\ipod\eject.bat 
29.
 
30.
REM ping dient hier als kurze pause zwischen beenden des Hauptprogramms und starten der eject funktion  
31.
(läuft leider sichtbar ab) 
32.
 
33.
start /separate %systemdrive%\ipod\eject.bat  
34.
 
35.
exit
Die eject.bat wird nun aus der batch erzeugt und unter \ipod\eject.bat aufgerufen.

Gruß Milo
Bitte warten ..
Mitglied: speedygonsales
11.12.2008 um 15:24 Uhr
Hallo Milo

Also habe dein Script genommen und wie folgt nur leicht verändert.

01.
@echo off 
02.
 
03.
md %systemdrive%\ipod 
04.
copy \tool\deveject.exe %systemdrive%\ipod\deveject.exe /y 
05.
 
06.
if not exist %windir%\system32\tasklist.exe copy \tools\tasklist.exe %windir%\system32\ 
07.
 
08.
start /separate \tool\YamiPod.exe  
09.
ping -n 10 127.0.0.1 >nul  
10.
 
11.
:start  
12.
cls  
13.
set ProgEXE=YamiPod.exe  
14.
TaskList /FI "IMAGENAME eq %ProgEXE%" 2>NUL | Find "%ProgEXE%" >NUL  
15.
IF ERRORLEVEL == 1 goto :weiter  
16.
 
17.
 
18.
:loop  
19.
echo Pruefe aktiven Prozess  
20.
ping -n 5 127.0.0.1 >nul  
21.
goto :start  
22.
 
23.
:weiter  
24.
 
25.
REM eject.bat wird erzeugt 
26.
del %systemdrive%\ipod\eject.bat 
27.
 
28.
echo ping -n 5 127.0.0.1 >>%systemdrive%\ipod\eject.bat 
29.
echo %systemdrive%\ipod\deveject "-EjectId:USB\VID_05AC&PID_1260\000A270019E0172A" >>%systemdrive%\ipod\eject.bat 
30.
 
31.
REM ping dient hier als kurze pause zwischen beenden des Hauptprogramms und starten der eject funktion  
32.
(läuft leider sichtbar ab) 
33.
 
34.
start /separate %systemdrive%\ipod\eject.bat  
35.
 
36.
exit
Mit folgendem Ergebins.


F:\>ping -n 5 127.0.0.1

Ping wird ausgeführt für 127.0.0.1 mit 32 Bytes Daten:
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128

Ping-Statistik für 127.0.0.1:
Pakete: Gesendet = 5, Empfangen = 5, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms

F:\>C:\ipod\deveject "-EjectId:USB\VID_05AC&PID_1260\000A270019E0172A"
DevEject 1.0 2003 c't/Matthias Withopf

Ejecting '@usbstor.inf,%genericbulkonly.devicedesc%;USB-Massenspeichergerõt' [U
SB\VID_05AC&PID_1260\000A270019E0172A]...FAILED (23,6)
Error ejecting device USB\VID_05AC&PID_1260\000A270019E0172A, vetoed (15,6)!

F:\>


Irgendwo muß da ein hund begraben sein...
Bitte warten ..
Mitglied: 72648
11.12.2008 um 15:35 Uhr
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
Bitte warten ..
Mitglied: speedygonsales
11.12.2008 um 15:57 Uhr
Die funktioniert wieder einwandfrei. Es müssen aber alle Fenster bzw. Prozesse beendet sein die auf den Ipod verweisen. Das war aber bei der "alten" eject.bat ebenso.
Bitte warten ..
Mitglied: 72648
11.12.2008 um 16:09 Uhr
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
Bitte warten ..
Mitglied: speedygonsales
11.12.2008 um 16:16 Uhr
Ne dann kommt das hier...


C:\Users\abc>ping -n 5 127.0.0.1

Ping wird ausgeführt für 127.0.0.1 mit 32 Bytes Daten:
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit=1ms TTL=128

Ping-Statistik für 127.0.0.1:
Pakete: Gesendet = 5, Empfangen = 5, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 0ms, Maximum = 1ms, Mittelwert = 0ms

C:\Users\abc>C:\ipod\deveject "-EjectId:USB\VID_05AC&PID_1260\000A27001
9E0172A"
DevEject 1.0 2003 c't/Matthias Withopf

Error ejecting device USB\VID_05AC&PID_1260\000A270019E0172A, not found (4,0)!

C:\Users\abc>
Bitte warten ..
Mitglied: 72648
11.12.2008 um 16:31 Uhr
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
Bitte warten ..
Mitglied: speedygonsales
11.12.2008 um 17:07 Uhr
Ultimate

Ich werds mal checken mit dem Ping
Bitte warten ..
Mitglied: speedygonsales
11.12.2008 um 17:35 Uhr
Ne das mit 30sek geht auch net. Kommt folgendes:


F:\>ping -n 30 127.0.0.1

Ping wird ausgeführt für 127.0.0.1 mit 32 Bytes Daten:
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
.
.
.
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128

Ping-Statistik für 127.0.0.1:
Pakete: Gesendet = 30, Empfangen = 30, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms

F:\>C:\ipod\deveject "-EjectId:USB\VID_05AC&PID_1260\000A270019E0172A"
DevEject 1.0 2003 c't/Matthias Withopf

Ejecting '@usbstor.inf,%genericbulkonly.devicedesc%;USB-Massenspeichergerõt' [U
SB\VID_05AC&PID_1260\000A270019E0172A]...FAILED (23,6)
Error ejecting device USB\VID_05AC&PID_1260\000A270019E0172A, vetoed (15,6)!

F:\>

Der Startet die Batch von F: und nicht von %systemdrive%

Wenn ich die Batch direkt von C: starte dann klappts wieder. Man müsste der Batch nur direkt von C: starten lassen.

Bin ein ziehmlicher Klugscheißer gell?
Bitte warten ..
Mitglied: Biber
11.12.2008 um 18:17 Uhr
Moin speedgonsales,

wie wäre es, wenn Du zwischen dem Erzeugen der eject.bat und dem Starten der eject.bat auf Laufwerk %systemdrive% wechselst?
Eigentlich sollte ein tumbes
%systemDrive%
...in der momentan leeren Zeile 27 des Schnipsels reichen.

Grüße
Biber
Bitte warten ..
Mitglied: speedygonsales
11.12.2008 um 19:47 Uhr
Moin Biber

Ich sach mal danke. Genau das wars. Jetzt läuft alles wie gewünscht.

Somit ist der Thread von mir jetzt als "gelößt" Markiert.

Zum guten Schluß hier noch mal der funktionierende Code...

01.
@echo off 
02.
 
03.
md %systemdrive%\ipod 
04.
copy \tool\deveject.exe %systemdrive%\ipod\deveject.exe /y 
05.
copy \tool\eject.bat %systemdrive%\ipod\eject.bat /y 
06.
 
07.
if not exist %windir%\system32\tasklist.exe copy \tools\tasklist.exe %windir%\system32\ 
08.
 
09.
start /separate \tool\YamiPod.exe  
10.
ping -n 5 127.0.0.1 >nul  
11.
 
12.
:start  
13.
cls  
14.
set ProgEXE=YamiPod.exe  
15.
TaskList /FI "IMAGENAME eq %ProgEXE%" 2>NUL | Find "%ProgEXE%" >NUL  
16.
IF ERRORLEVEL == 1 goto :weiter  
17.
 
18.
 
19.
:loop  
20.
echo Pruefe aktiven Prozess  
21.
ping -n 5 127.0.0.1 >nul  
22.
goto :start  
23.
 
24.
:weiter  
25.
 
26.
%systemDrive% 
27.
start /separate %systemdrive%\ipod\eject.bat  
28.
 
29.
exit
Thanks nochmal an alle die mir geholfen haben!

Kai
Bitte warten ..
Mitglied: 72648
12.12.2008 um 13:58 Uhr
@Biber

Danke für den Hinweis.

Gruß Milo
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch erst starten wenn bestimmte Datei vorhanden ist (7)

Frage von pdiddo zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch, Aufgabe mit höchsten Previlegien soll Outlook "normal" starten (6)

Frage von Zunaras zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...