Batch-Datei funktioniert nicht richtig
Ich habe vor kurzem eine einfache Batch-Datei geschrieben die durch bestimmte Eingaben die entsprechenden Programme öffnet.
Nun... mein Problen ist wenn ich iTunes (also "tun" eingebe siehe in Batch) öffnen will, reagiert es nicht.
Meine Batch-Datei:
Die Datei ist eigentlich ja länger, aber ich hab das unwichtige einfach entfernt. Wahrscheinlich ist die Lösung einfcher als ich dachte^^.
Vielen Dank schonmal voraus
mfg EinTyp
Nun... mein Problen ist wenn ich iTunes (also "tun" eingebe siehe in Batch) öffnen will, reagiert es nicht.
Meine Batch-Datei:
@echo off
cls
:back
set /p x=Eingabe:
if %x%==task goto :task
if %x%==tun goto :iTunes
if %x%==ft goto :first
if %x%==nix goto :eof
if not %x%==cmd goto :back
:end
set /p y=Noch was?(n/y):
if %y%==y goto back
if %y%==n goto :eof
if %y%==cls goto cls2
if not %y%==y goto end
:task
start taskmgr.exe
goto end
:iTunes
set tun0=iTunes.exe
tasklist |find /i "%tun0%" >nul
if %errorlevel% == 0 (
echo iTunes ist schon offen!
:yntun
set /p ztun=Trorzdem oeffnen?(y/n):
if %ztun%==y goto :ytun
if %ztun%==n goto :ntun
if not %ztun%==y goto :yntun
:ytun
start iTunes.exe
goto :end
:ntun
goto :back
) else (
start iTunes.exe
)
goto :end
:first
start C:\Users\Alias\Programme\Firefox_3.6.2\FirefoxPortable.exe
start C:\Admin_Gabi\ThunderbirdPortable_2.0.0.19\ThunderbirdPortable.exe
goto end
cls
:back
set /p x=Eingabe:
if %x%==task goto :task
if %x%==tun goto :iTunes
if %x%==ft goto :first
if %x%==nix goto :eof
if not %x%==cmd goto :back
:end
set /p y=Noch was?(n/y):
if %y%==y goto back
if %y%==n goto :eof
if %y%==cls goto cls2
if not %y%==y goto end
:task
start taskmgr.exe
goto end
:iTunes
set tun0=iTunes.exe
tasklist |find /i "%tun0%" >nul
if %errorlevel% == 0 (
echo iTunes ist schon offen!
:yntun
set /p ztun=Trorzdem oeffnen?(y/n):
if %ztun%==y goto :ytun
if %ztun%==n goto :ntun
if not %ztun%==y goto :yntun
:ytun
start iTunes.exe
goto :end
:ntun
goto :back
) else (
start iTunes.exe
)
goto :end
:first
start C:\Users\Alias\Programme\Firefox_3.6.2\FirefoxPortable.exe
start C:\Admin_Gabi\ThunderbirdPortable_2.0.0.19\ThunderbirdPortable.exe
goto end
Die Datei ist eigentlich ja länger, aber ich hab das unwichtige einfach entfernt. Wahrscheinlich ist die Lösung einfcher als ich dachte^^.
Vielen Dank schonmal voraus
mfg EinTyp
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 146824
Url: https://administrator.de/contentid/146824
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
16 Kommentare
Neuester Kommentar
Hallo
Ich glaube es liegt daran, dass du bei zeile 35 den Pfad nicht angegeben hast:
Gruss
Switcher
Ich glaube es liegt daran, dass du bei zeile 35 den Pfad nicht angegeben hast:
Gruss
Switcher
auch dir kein Moin oder Tach,
das "kommt" davon, wenn gleich in der allerersten Zeile das berühmte doppelte Dingenskirchen das eigentlich nur eingeweihte in Ihren fix&Ready Batchen schreiben in einer ich hätt gern noch ein Problembatch steht.
Mach das erste Zeilchen raus, in das letzte eine pause und dann siehst du den DoppelxfachBock.
Gruß
edit - bastla war gleichlautend schneller...
Die Else mags nicht alleine - die geht doch nicht nurabends immer mit dem FIFI spazieren.
Hmm wenn das Gerüst ein Haus wäre - würde ich schreiben, reiss es ab und konstruier das mal neu
btw:
"%programfiles% ist eine Variable, die immer weiß wo was geht und steht.
das "kommt" davon, wenn gleich in der allerersten Zeile das berühmte doppelte Dingenskirchen das eigentlich nur eingeweihte in Ihren fix&Ready Batchen schreiben in einer ich hätt gern noch ein Problembatch steht.
Zitat von @EinTyp:
iTunes ist aber im Ordner Programme gespeichert. Da braucht man (meines Wissens nach) kein Pfad anzugeben.
iTunes ist aber im Ordner Programme gespeichert. Da braucht man (meines Wissens nach) kein Pfad anzugeben.
- Du irrst
Aber das eigentliche Problem ist ja, dass in beiden Fällen, egal ob iTunes läüft oder nicht, nichts passiert, außer dass sich das
cmd-Fenster sofort schließt.
cmd-Fenster sofort schließt.
Mach das erste Zeilchen raus, in das letzte eine pause und dann siehst du den DoppelxfachBock.
Gruß
edit - bastla war gleichlautend schneller...
Die Else mags nicht alleine - die geht doch nicht nurabends immer mit dem FIFI spazieren.
:ntun
goto :back
) else (
start iTunes.exe
)
Hmm wenn das Gerüst ein Haus wäre - würde ich schreiben, reiss es ab und konstruier das mal neu
btw:
"%programfiles% ist eine Variable, die immer weiß wo was geht und steht.
Hallo,
könnte es daran liegen, dass du nur "start itunes.exe" aufrufst, statt "start c:\programme\...\itunes.exe"?
ansonsten lass mal @echo off aus und schreibe nach der Startanweisung eine pause. Dann schreibt das cmd evtl. eine Meldung.
Viele Grüße vom creyzee
edit: Na so was, eben habe ich noch keine Antworten gesehen...
könnte es daran liegen, dass du nur "start itunes.exe" aufrufst, statt "start c:\programme\...\itunes.exe"?
ansonsten lass mal @echo off aus und schreibe nach der Startanweisung eine pause. Dann schreibt das cmd evtl. eine Meldung.
Viele Grüße vom creyzee
edit: Na so was, eben habe ich noch keine Antworten gesehen...
Hallo EinTyp!
Wie TimoBeil ist auch mir die "
Auch dem schon mehrfach angebrachten Hinweis auf den Pfad solltest Du zumindest durch eine direkte Eingabe von
<code "type="plain">iTunes
an der Kommandozeile nachgehen (alternativ kannst Du in der Variablen %path% oder durch die Verwendung des gleichnamigen Befehles sehen, welche Ordner durchsucht werden, wenn ein zu startendes Programm nicht im aktullen Ordner gefunden wird) ...
Grüße
bastla
P.S.: Mit der entrsprechenden lässt sich gepostetern Code besser lesen ...
Wie TimoBeil ist auch mir die "
if / else
"-Konstruktion mit den enthaltenen Sprungmarken und zusätzlichen "if
" etwas suspekt - daher würde ich das etwa so "entzerren":tasklist |find /i "%tun0%" >nul || goto :ytun
echo iTunes ist schon offen!
:yntun
set /p ztun=Trorzdem oeffnen?(y/n):
if %ztun%==y goto :ytun
if %ztun%==n goto :ntun
if not %ztun%==y goto :yntun
:ytun
start iTunes.exe
goto :end
:ntun
goto :back
<code "type="plain">iTunes
an der Kommandozeile nachgehen (alternativ kannst Du in der Variablen %path% oder durch die Verwendung des gleichnamigen Befehles sehen, welche Ordner durchsucht werden, wenn ein zu startendes Programm nicht im aktullen Ordner gefunden wird) ...
Grüße
bastla
P.S.: Mit der entrsprechenden lässt sich gepostetern Code besser lesen ...
Moin EinTyp.
bitte hark erst einmal grob durch durch dein dadaistisches Kunstwerk.
Zwei Sachen sind zu bedenken:
Diese Kontrollstrukturen minimieren die Notwendigkeit eines epileptischen Rumgezappels mit "goto :egalHauptsacheWegHier".. Nutze es.
Als Einstieg und Anregung zum ersten Durchharken eine halb kommentierte 1234.cmd (nach wie vor nicht laufend!).
Grüße
Biber
bitte hark erst einmal grob durch durch dein dadaistisches Kunstwerk.
Zwei Sachen sind zu bedenken:
- Die Jungs und Mädels in Redmond haben jahrelang rumgedruckst, bevor sie endlich ein paar minimalistische Kontrollstrukturen wie "IF this ( blah) ELSE otherblah" zugelassen haben in Batchen.
Diese Kontrollstrukturen minimieren die Notwendigkeit eines epileptischen Rumgezappels mit "goto :egalHauptsacheWegHier".. Nutze es.
- Du darfst auch gerne mit Goto durch den Schnipsel hoppeln.
Als Einstieg und Anregung zum ersten Durchharken eine halb kommentierte 1234.cmd (nach wie vor nicht laufend!).
@echo on
REM Biber goto :01 & :: geht er ohnehin hin
REM Biber :01
set tun0=iTunes.exe
REM Biber -- Variablen, die nur ein einziges Mal verwendet werden
REM Biber -- und das in der direkt folgenden Zeile sind für die Hasen
tasklist |find /i "%tun0%" >nul
if %errorlevel% == 0 (
echo iTunes ist schon offen!
REM Biber goto :yntun & :: geht er ohnehin hin
:yntun
REM Biber ... eine runde Klammer vom IF ( ist offen
REM Schreib doch mal eine Klammer-Zu *gg
set /p ztun=Trorzdem oeffnen?(y/n):
wetten hier kommt er nie hin???
if %ztun%==y goto :ytun
if %ztun%==n goto :ntun
if not %ztun%==y goto :yntun
:ytun
start %programfiles%\iTunes\iTunes.exe
REM Biber goto :end & wo issen :end??
:ntun
REM Biber goto :back & wo issen :back??
) else (
pause
start %programfiles%\iTunes\iTunes.exe
)
REM Biber goto :end & wo issen :end??
Grüße
Biber
Hallo einTyp
Den Programmordner gibt es auch als Variable: %Programfiles%.
Genau so wie %userprofile%, %appdata%, %systemroot%, etc.
Gib in der CMD-Konsole z.B. mal folgendes ein:
echo %programfiles%
Heraus kommt bei mir:
C:\Program Files
Diese Variablen kannst du für das Zusammensetzen von Pfaden verwenden.
Den Programmordner gibt es auch als Variable: %Programfiles%.
Genau so wie %userprofile%, %appdata%, %systemroot%, etc.
Gib in der CMD-Konsole z.B. mal folgendes ein:
echo %programfiles%
Heraus kommt bei mir:
C:\Program Files
Diese Variablen kannst du für das Zusammensetzen von Pfaden verwenden.
Am einfachsten wäre es, unter C:\ einen ordner LINK zu erstellen, dort alle Verknüpfungen Reinkopieren (die verknüpfung muss den naemen des Programmes haben (z.B. itunes.lnk vlc.lnk), dann der bacth so:
Hoffe es Hilft...
@ echo off
:start
cls
Echo Bitte geben Sie den Namen der Application ein:
dir C:\LINK
Echo.
Set /P programm= Ihre Application (ohne .link):_
if EXIST C:\LINK\%programm%.lnk goto :ok
goto :start
:ok
start C:\LINK\%programm%.lnk
exit
Hoffe es Hilft...