Das CMD-Fenster wird nicht geschlossen, wenn der Ordner während der Ausführung der bat-Datei geschlossen wird

17

Ich habe eine Server 2012 R2 Standard 64 Bit virtuelle Maschine, die seltsam handelt. Bat-Dateien funktionieren einwandfrei und das CMD-Fenster wird normal geschlossen. Wird jedoch der Ordner mit der Bat-Datei während der Ausführung der Bat-Datei geschlossen, wird das CMD-Fenster nicht geschlossen. Ich habe dies so vereinfacht, dass es die einfachstmögliche Fledermausfeile gibt. Es enthält 1 Zeile. Pause

  1. Öffnen Sie den Ordner mit der Bat-Datei mit Windows Explorer
  2. Starten Sie die bat-Datei durch Doppelklick
  3. Schließen Sie das Windows Explorer-Fenster
  4. Drücken Sie eine beliebige Taste im CMD-Fenster
  5. Der Cursor springt zur nächsten Zeile, wenn die Fledermausdatei fertig ist
  6. CMD-Fenster bleibt bestehen

Dies geschieht nur auf einer Maschine. Weiß jemand, warum das sein könnte? Es ist eine Test-VM und sollte vielleicht nur umgebaut werden, aber es hat mich neugierig gemacht. Vielen Dank

Ich habe meine einfache Fledermausdatei durch eine ersetzt, die Folgendes enthält:

@assoc .bat
@for /F "tokens=1,* delims==" %%G in ('assoc .bat') do @ftype %%H
@reg query "HKLM\Software\Microsoft\Command Processor" /v AutoRun 2>NUL
@reg query "HKCU\Software\Microsoft\Command Processor" /v AutoRun 2>NUL
@wmic process where "caption = 'cmd.exe'" get CommandLine, ParentProcessId,     ProcessID
@echo please close Windows Explorer before continuing
@pause
@wmic process where "caption = 'cmd.exe'" get CommandLine, ParentProcessId,     ProcessID
@pause

Die Ergebnisse sind nachstehend aufgeführt:

.bat=batfile
batfile="%1" %*



CommandLine                                      ParentProcessId  ProcessId
C:\Windows\system32\cmd.exe /c ""D:\test.bat" "  1608             8460

please close Windows Explorer before continuing
Press any key to continue . . .
CommandLine                                      ParentProcessId  ProcessId
C:\Windows\system32\cmd.exe /c ""D:\test.bat" "  1608             8460

Press any key to continue . . .

Befehlszeile

13.04.2016 Ich habe ein bisschen mehr herausgefunden, indem ich mir den Task-Manager angesehen habe. Wenn ich die bat-Datei starte, erscheinen im Fenster Task-Manager - Details 2 Zeilen ... 1 für cmd.exe und 1 für conhost.exe. Wenn die Fledermaus beendet ist, verschwindet cmd.exe, conhost.exe bleibt jedoch erhalten. Eine andere Sache, die mir aufgefallen ist, ist, dass Sie den Windows Explorer-Ordner nicht wirklich verlassen müssen, wie ich bereits sagte ... Alles, was Sie tun müssen, ist irgendwo im Explorer-Fenster zu klicken. Wenn ich nicht auf eine beliebige Stelle im Explorer-Fenster klicke, wird das CMD-Fenster für die Bat-Datei normal geschlossen und beide Aufgaben werden erwartungsgemäß aus dem Detailfenster entfernt.

RGuggisberg
quelle
2
Leider kann ich nicht helfen. Aber ich muss Sie mit einer gut geschriebenen Frage ergänzen, die genau Ihr Problem beschreibt. Ich wünschte, mehr Erstplakate hätten sich die Zeit genommen, eine gut geschriebene Frage wie diese zu schreiben. Natürlich kann ich das Verhalten auf meinem Win 10-Computer nicht reproduzieren. Und da Sie nur das Verhalten auf einem bestimmten Computer sehen, kann es für jeden schwierig sein, zu diagnostizieren, was gerade vor sich geht.
Dbenham
Danke @dbenham. Ich respektiere Ihr Wissen und die Weisheit, die Sie unter dem Batch-File-Tag auf SO ausgeben. Ich bin also zum ersten Mal ein Poster hier bei Super User, aber ich weiß, was Sie über neue Poster meinen. Ja, ich bin damit einverstanden, dass es nicht wahrscheinlich ist, dass jemand duplizieren kann ... nur in der Hoffnung, dass vielleicht jemand anderes darauf gestoßen ist. Es ist nur eine Test-VM, es ist also nicht kritisch. Ich möchte nur wissen, was es ist, falls es jemals auf der Maschine eines Kunden passiert ist.
RGuggisberg
1
@RGuggisberg - Stellen Sie sicher, dass Sie Ihre Konten zusammenführen, damit Sie Ihre eigenen Fragen bearbeiten können. Sie müssen keine Angaben hinzufügen, die Sie in Ihrer Frage bearbeitet haben. Das System erledigt dies für Sie, völlig unnötig.
Ramhound
1
Ich hatte auch das gleiche Problem auf einer meiner VMs, als Problemumgehung habe ich den exitBefehl zum Schließen des CMD-Fensters explizit erwähnt . Vielleicht könnte das helfen.
Manjesh23
1
Haben Sie versucht, mit der Funktion "Wartekette analysieren" des Ressourcenmonitors zu ermitteln, auf welcher Anwendung der Prozess "ConHost.exe" wartet?
Xtremity

Antworten:

1

Dies ist unwahrscheinlich, aber Sie scheinen alle wahrscheinlichen Dinge ausgeschlossen zu haben. Überprüfen Sie die folgenden zwei Registrierungseinträge, um festzustellen, ob sie etwas enthalten:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

oder

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor

Alles, was sich dort befindet, wird jedes Mal aufgerufen, wenn Sie eine Batch-Datei ausführen, und wenn dies der Fall ist cmd /k, würde dies zu diesem Verhalten führen.

Argonauten
quelle
Danke ... das ist es auch nicht. Es ist nur eine Testmaschine, also versuche ich nicht mehr, es herauszufinden.
RGuggisberg
0

Hast du das versucht?

@echo off
rem some code
pause
cls
exit

Gleiche Dinge, aber erlaubt gleiche wie Pause und geht von selbst aus.

Und warum stellst du das @ vor alles? Warum nicht einfach @echo off vor den restlichen Befehlen verwenden?

qq410219243
quelle
Ja .. habe das schon probiert. Stimmen Sie dem @ -Vorwort zu. Normalerweise ist es das, was ich tue. Das spielt keine Rolle. Vermutlich hatte das etwas Zeit für erste Tests, um Befehle zu sehen.
RGuggisberg