Hallo Community
Ich hab Problem mit ner Batch die ich selber versuche zu schreiben
Folgendes
Ich habe eine "Hauptbatch"
mit dieser rufe ich über den Befehl :
cmd /c start /MIN Data\Melder.bat
Eine andere auf
Dies ist eine "Schleifenbatch", die immer wieder überprüft ob eine bestimmte Datei vorhanden ist.
Ist sie vorhanden soll sie eine andere Datei aufrufen.
Das kann sie aber nicht
Fehlermeldung : Pfad kann nicht gefunden werden
Kopier ich aber den selben pfad in eine neue Batch und führe diese aus kann er den Pfad finden
Meine Vermutung ist momentan, dass eine von einer Batch aufgerufene Batch nichts mehr aufrufen kann
Kennt ihr Parameter, mit denen man das fixen kann ???
oder nen komplett aderen aufrufbefehl (call hab ich auch schon versucht)
__________________
CPU: Amd Phenom II 1100 T
GPU: Asus Radeon HD 6970
Ram: Samsung 1333 DDR3
Mainboard: Gigabyte 990FXA-UD3
1. Du kannst "cmd /c" auch weg lassen und nur start schreiben
2. Warum verwendest du nicht einfach 1 File mit diesen 3 Funktionen?
3. Hat bei mir ohne Probleme geklappt, möglicherweise hast du dich nur vertippt, geht denn die Melder.bat richtig, wenn du sie direkt aufrufst und nicht erst über die "Hauptbatch"?
Mein code:
haupt.bat:
Code:
@echo off
echo "%cd%"
REM ^ damti wird der aktuelle Pfad ausgegeben (zu Testzwecken)
echo ich bin haupt
start schleife.bat
schleife.bat:
Code:
@echo off
echo %cd%
echo ich bin die schleife
start ergebnis.bat
ergebnis.bat:
Code:
@echo off
echo %cd%
echo und ich bin das fertige ergebnis
oder eben alles in einem File:
Code:
@echo off
:haupt
echo "%cd%"
echo ich bin haupt
goto schleife
REM ^ start XXX.bat wird einfach durch goto ersetzt und das entsprächende Label (beginnend mit ":")
:schleife
echo %cd%
echo ich bin die schleife
goto ergebnis
:ergebnis
echo %cd%
echo und ich bin das fertige ergebnis
(aus Debugging gründen wurde "exit 0" am ende immer weggelassen)
Nee das mit der schleife hab ich wohl n bissel blöde formuliert
Ich miente sowas
:schleife
if diesunddas ist die dann starte irgendwas
goto schleife
und dabei soll das hauptprogramm noch laufen
und das cmd /c am anfang kann ich aus frag nicht warum gründen nicht weglassen, weil er sich dann weigert die bat zu öffnen er gibt mir dann nur nen neues cmd fenster inzwischen bin ich schon soweit dass ich ienfach "pfad + dateinamen" schreiben aber er kann die datei immernochnicht aufrufen
Und ja der melder funktioniert perfekt wenn ich ihn nochmal extra starte
Ich weiß echt nciht was ich machen soll und vertippt kann nicht sein hab den pfad kopiert oben vom fenster im explorer
__________________
CPU: Amd Phenom II 1100 T
GPU: Asus Radeon HD 6970
Ram: Samsung 1333 DDR3
Mainboard: Gigabyte 990FXA-UD3
ok, aber wie schon gesagt, der Code den ich oben geschrieben habe, geht ohne Probleme. Führ nach der reihe alle Teile aus. Ich hab zwar keine schleife drin, aber nur weil ich zu faul bin mich wieder mehr mit Windows-Stapelverarbeitung zu beschäftigen . Das ändert aber nix an der Funktion.
Poste mal deinen Code, möglicherweise kann man dir so mehr helfen.
#Hostcomputer[Eigenhost=1]
#Beispiel
#Nachrichtensound
#ja oder nein
#Nickname
#Mister Beispiel
Hostcomputer
1
Nachrichtensound
ja
Nickname
Statist
Chat.bat
@echo off
title Chat
goto anfang
:fehler
echo Ein Fehler in den Einstellungen wurde festgestelt
echo BITTE PRUEFEN SIE DIE EINSTELLUNGEN
pause
goto exit
:anfang
cls
For /F "skip=9" %%A in (Einstellungen.txt) do set hname=%%A& goto :hostjn
:hostjn
if not "%hname%"=="1" goto nhost
:host
cls
echo Setzt Arbeitspunkte!
set link=C:\Lanch\Chat.txt
set mlink=C:\Lanch\Meldung.txt
set slink=C:\Lanch\Sound.txt
echo wurde gesetzt
ping /n 2 localhost >nul
goto anmeldung
-------------------------------------------------
:nhost
echo Setzt Arbeitspunkte
if not exist "\\%hname%\Chat" goto fehler
set link=\\%hname%\Chat\Chat.txt
set mlink=\\%hname%\Chat\Meldung.txt
set slink=\\%hname%\Chat\Sound.txt
ping /n 2 localhost >nul
goto anmeldung
------------------------------------------------
:anmeldung
For /F "skip=11" %%A in (Einstellungen.txt) do set sound=%%A& goto :soundu
:soundu
if "%sound%"=="ja" goto soundj
if "%sound%"=="nein" goto nick
goto fehler
:nick
For /F "skip=13" %%A in (Einstellungen.txt) do set nick=%%A& goto :chfenster
:chfenster
cls
set eingabe=2
TYPE "%link%"
echo ------------------------------
echo Etwas schreiben ?
echo [1=Ja, Belibige Taste=Refresh]
set /P eingabe=""
if "%eingabe%"=="1" goto nachrichtv
goto chfenster
------------------------------
:nachrichtv
cls
set /P nachricht="Nachricht: "
echo %nick%: %nachricht% >> "%link%"
echo Meldung >> "%mlink%"
:soundjn
if "%sound%"=="nein" goto nachrichtz
if exist "%slink%" goto nachrichtz
goto soundjn
:nachrichtz
Erase "%mlink%"
goto chfenster
:exit
Data\Melder.bat
@echo off
For /F "skip=9" %%A in (Einstellungen.txt) do set hostc=%%A& goto :fix
:fix
if "%hostc%"=="1" goto linkh
set link1=\\%hostc%\Chat\Meldung.txt
set link2=\\%hostc%\Chat\Sound.txt
goto loop
:linkh
set link1=C:\Lanch\Meldung.txt
set link2=C:\Lanch\Sound.txt
:loop
echo Warte....
if exist "%link1%" goto aktiv
cls
goto loop
Ich geh mal davon aus dass er "Sounds\Nachricht.exe" nicht starten will. Du könntest da auch am Anfang noch start dazu schreiben (also "start Sounds\Nachricht.exe"), aber eigentlich solle er es ausführen.
Aber mal ganz grundlegend, warum schreibst du so etwas als Stapelverarbeitung? Du wirst in der Schleife dauerhaft volle CPU load haben. Ich würde dir das in irgendeiner "echten" Programmiersprache raten, mit verwendung von Sockets (und nicht die Windowsfreigabe ...).
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] wäre zb. ein schönes Bsp. für C.