Windows-Batch-Datei - Batch-Datei ausführen beendet auf halbem Weg nach einem Befehl dauert es eine Weile, bis die vollständige
Folgenden werden die Inhalte der Datei "vs. Fledermaus"
call "C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
call path.bat
dea usev bis
cd ana
call b-env-i.bat
Wenn ich diese Batchdatei ausführen, wird die Ausführung beendet, nachdem Sie den folgenden Schritt.
dea usev bis
Kann jemand bitte helfen Sie, indem Sie heraus, was hier schief gelaufen und wie kann ich alle Befehle ausführen. Beachten Sie, dass die oben genannten Befehl (dea usev biz) funktioniert einwandfrei (sowohl in der batch-und, wenn separat ausgeführt). dea ist der name der ausführbaren Datei und "usv bis" sind runtime-Parameter an die "dea" - exe.
Ich bin mit Windows 7.
Klarstellung:
Wenn ich laufen vs. bat, nach dem Dritten Aufruf "dea usev bis" erfolgreich ausgeführt wurde, wird der batch-Datei Stoppt die Ausführung weiter. Das ist sowohl für die folgenden Aufrufe (die Teil des VS.bat) nicht ausgeführt
cd ana
rufen Sie b-env-ich.bat
Beachten Sie, dass der Aufruf "dea usev bis" dauert rund 20 Sekunden, um auszuführen, wenn einzeln ausgeführt und bei der Ausführung als Teil des Skripts.
Update:
Habe ich versucht, paxdiablo Anregungen, mit den folgenden Ergebnissen:
[C:\dea]for %i in (dea.cmd) do @echo %~$PATH:i
ECHO is on.
[C:\dea]for %i in (dea.bat) do @echo %~$PATH:i
ECHO is on.
[C:\dea]for %i in (dea.exe) do @echo %~$PATH:i
C:\dea\bin\dea.exe
[C:\dea]where dea.exe
C:\dea\bin\dea.exe
C:\dea\bin\dea.exe.1
C:\dea\bin\dea.exe.ia64
Wenn ich es explizit über das folgende habe ich immer noch das gleiche Problem begegnen
c:\dea\bin\dea.exe usev bis
Und, wie ich schon sagte, ändern Sie das Skript, um call dea
nicht das Problem zu beheben entweder.
Gibt es alles, was, die ich versuchen kann?
- Sind Sie sicher, dass "dea" ist eine exe-Datei
dea.exe
? Basiert auf Ihre problem, ich könnte Wetten, dass "dea" ist eine Batch-Datei:dea.bat
, so Bedarf es aber auch einer CALL-Befehl:call dea usev bis
als paxdiablo signalisiert in seiner Antwort,... - dea.exe ist nicht abgeschlossen. Ist dass das problem? Platzieren Sie eine
pause
Befehl auf der Linie nach es und sehen, ob es reicht, die Linie. - Wenn Sie Lesen-OP, die sorgfältig, Sie sehen werden, habe ich bereits erwähnt, dass der Aufruf von "dea usev bis" nicht erfolgreich abgeschlossen werden. "Beachten Sie, dass die oben genannten Befehl (dea usev biz) funktioniert einwandfrei (sowohl in der batch-und, wenn separat ausgeführt)."
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sieht aus wie Sie versuchen, rufen Sie ein anderes batch - /script-Datei, die, wenn Sie verlassen aus
call
, einfach angekettet eher als genannt (verkettet, bedeutet in diesem Kontext, spielt es keine Rückkehr). Ich würde vorschlagen, ändern die Zeile:Beispiel, betrachten Sie die Skripte
go2.cmd
:sowie
go.cmd
:Ausführung
go
wird Ihnen nur:weil die
go2 2
Linie Ketten, anstatt ruft das Skript. Diecall go2 1
Linie, jedoch, funktioniert gut.Und, auch wenn Sie haben eine
dea.exe
Datei, die nicht notwendigerweise bedeuten, es ist der eine, der ausgeführt wird. Dein script ruftdea
so lässt die Wahl hat, was tatsächlich ausgeführt wird, um die Schale (nach dem Pfad sucht, versuchen verschiedene Erweiterungen und so weiter).Zu überprüfen, ob oder nicht die Sache ist, die Sie eigentlich aufrufen wird eine batch-Datei oder nicht, können Sie das folgende tun. Zunächst führen Sie die folgende lobt:
(oder ich denke, Sie können einfach verwenden Sie
where dea*
wenn Sie mit Win 7+, siehe hier für details).Dies wird Ihnen zeigen, wenn es eine
dea.cmd/bat/exe
in Ihrem Pfad, und sagen Sie wo in den Pfad der relevanten Verzeichnisse sind. Wenn es ein Skript-version, es existiert der Pfad vor dieexe
version. Sie können einfach überprüfen Sie Ihre%PATH%
Umgebungsvariablen, um herauszufinden, in welchem Verzeichnis zuerst kommt.Zweitens, wenn Sie die
exe
imc:\dea\bin
haben, versuchen Sie, die explizit aus Ihrem script mit:Wenn das okay gibt, es fügt Unterstützung für die Tatsache, einen Skript-version verwendet wird anstatt.
Drittens könnte man einfach das Skript ändern, wie vorgeschlagen (add
call
) und sehen, wenn dieses es regelt. Wenn es ist verweisen auf ein Skript, das wird es beheben.Wenn keine dieser Arbeit (und das scheint der Fall zu sein, basierend auf Ihre Antwort, dass
dea
ist auf jeden Fall einexe
- Datei), müssen Sie zu Beginn der Suche in genau, wo der Fehler Auftritt. Diese kann getan werden, indem man eineecho
- Anweisung in zwischen jeder einzelnen Zeile, so dass Sie sehen können, was das Problem verursacht. In anderen Worten, so etwas wie:Wird Ihnen das Timing für die Dinge, die tun Arbeit und hoffentlich machen es offensichtlich, was nicht arbeiten.
exe
bedeutet nicht unbedingt, dass ist der, den man verwendet. Ich habe aktualisiert die Antwort mit Anweisungen, wie dies zu bestätigen.