Cửa sổ CMD sẽ không đóng nếu thư mục bị đóng trong khi thực hiện tệp bat


17

Tôi có một máy ảo 64 bit tiêu chuẩn Server 2012 R2 đang hoạt động kỳ lạ. Các tập tin Bat hoạt động tốt và cửa sổ CMD đóng bình thường; nhưng nếu thư mục chứa tệp bat bị đóng trong khi thực hiện tệp bat thì nó sẽ kết thúc nhưng cửa sổ CMD không đóng. Tôi đã đơn giản hóa điều này đến mức có tập tin bat đơn giản nhất có thể. Nó chứa 1 dòng. tạm ngừng

  1. Mở thư mục chứa tệp bat với Windows Explorer
  2. Bắt đầu tập tin bat bằng cách nhấp đúp vào nó
  3. Đóng cửa sổ Windows Explorer
  4. Nhấn phím bất kỳ trong cửa sổ CMD
  5. Con trỏ di chuyển đến dòng tiếp theo khi tập tin bat kết thúc
  6. Cửa sổ CMD vẫn còn

Điều này chỉ xảy ra trên một máy. Có ai biết tại sao điều này có thể được? Nó là một VM thử nghiệm và có lẽ chỉ nên được xây dựng lại, nhưng nó khiến tôi tò mò. Cảm ơn

Tôi đã thay thế tập tin bat đơn giản của mình bằng một tập tin có chứa như sau:

@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

Kết quả được hiển thị dưới đây:

.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 . . .

Dòng lệnh

13/03/2016 Tôi đã tìm hiểu thêm một chút bằng cách xem Trình quản lý tác vụ trong khi thực hiện việc này. Khi tôi khởi động tập tin bat, 2 dòng xuất hiện trong Trình quản lý tác vụ - Cửa sổ chi tiết ... 1 cho cmd.exe và 1 cho conhost.exe. Khi dơi kết thúc cmd.exe, nhưng conhost.exe vẫn còn. Một điều khác tôi nhận thấy là bạn không thực sự phải thoát khỏi thư mục Windows Explorer như tôi đã nói trước đây ... tất cả những gì bạn phải làm là nhấp vào bất cứ nơi nào trong cửa sổ Explorer. Nếu tôi không nhấp vào bất cứ nơi nào trong cửa sổ Explorer, cửa sổ CMD cho tệp bat sẽ đóng bình thường và cả hai tác vụ đều biến mất khỏi cửa sổ chi tiết như chúng ta mong đợi.


2
Thật không may, tôi không thể giúp. Nhưng tôi phải bổ sung cho bạn về việc cung cấp một câu hỏi được viết tốt mô tả chính xác vấn đề của bạn, tôi muốn những người đăng lần đầu tiên dành thời gian để viết một câu hỏi được viết tốt như thế này. Tất nhiên tôi không thể tái tạo hành vi trên máy Win 10 của mình. Và vì bạn chỉ nhìn thấy hành vi trên một máy cụ thể, nên mọi người có thể khó chẩn đoán điều gì đang xảy ra.
dbenham

Cảm ơn @dbenham. Tôi tôn trọng kiến ​​thức của bạn và sự khôn ngoan mà bạn phân phối trên SO theo thẻ tệp bó. Vì vậy, tôi là người đăng lần đầu tiên ở đây trên Super User nhưng tôi biết ý của bạn về người đăng mới. Vâng, tôi đồng ý rằng không có khả năng ai đó có thể sao chép ... chỉ hy vọng có thể người khác đã gặp phải điều này. Nó chỉ là một VM thử nghiệm nên không quan trọng. Chỉ muốn biết nó là gì trong trường hợp nó đã xảy ra trên máy của khách hàng.
RGuggisberg

1
@RGuggisberg - Hãy chắc chắn rằng bạn hợp nhất các tài khoản của mình để có thể chỉnh sửa các câu hỏi của riêng bạn. Bạn không cần phải thêm các dấu hiệu bạn đã chỉnh sửa câu hỏi của mình, hệ thống thực hiện điều đó cho bạn, hoàn toàn không cần thiết.
Ramhound

1
Tôi cũng gặp vấn đề tương tự trên một máy ảo của mình, vì một cách giải quyết tôi đã đề cập rõ ràng exitlệnh để đóng cửa sổ CMD. Có thể điều này có thể giúp đỡ.
manjesh23

1
Bạn đã thử tính năng Phân tích chuỗi chờ của Trình giám sát tài nguyên để xác định ứng dụng nào mà quy trình Conhost.exe đang chờ?
Xtremity

Câu trả lời:


1

Điều này là không thể nhưng dường như bạn đã loại trừ tất cả những điều có thể xảy ra. Kiểm tra hai mục đăng ký sau để xem chúng có chứa gì không:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

hoặc là

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor

Bất cứ điều gì trong đó sẽ được gọi mỗi khi bạn chạy một tệp bó và nếu nó có cmd /kđiều đó sẽ gây ra hành vi này.


Cảm ơn ... đó cũng không phải là nó. Nó chỉ là một máy thử nghiệm, vì vậy tôi không còn cố gắng để tìm ra nó.
RGuggisberg

0

Bạn đã thử điều này?

@echo off
rem some code
pause
cls
exit

Những điều tương tự, nhưng cho phép tương tự như tạm dừng và thoát ra.

Ngoài ra, tại sao bạn lại đặt @ trước mọi thứ? Tại sao không sử dụng @echo tắt trước các lệnh còn lại?


Vâng .. đã thử nó. Đồng ý với lời nói đầu @. Điển hình đó là những gì tôi làm. Không quan trọng cho việc này. Có lẽ đã có trong đó cho một số thử nghiệm ban đầu để xem các lệnh.
RGuggisberg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.