Yarasa dosyasının yürütülmesi sırasında klasör kapatılırsa CMD penceresi kapanmaz


17

Garip davranan bir Server 2012 R2 Standard 64 Bit sanal makinem var. Yarasa dosyaları iyi çalışıyor ve CMD penceresi normal olarak kapanıyor; ancak yarasa dosyasının yürütülmesi sırasında yarasa dosyasını içeren klasör kapatılırsa biter, ancak CMD penceresi kapanmaz. Bunu mümkün olan en basit yarasa dosyasına sahip olana kadar basitleştirdim. 1 satır içerir. Duraklat

  1. Windows Gezgini ile bat dosyasını içeren klasörü açın
  2. Yarasa dosyasını çift tıklatarak başlatın.
  3. Windows Gezgini penceresini kapatın
  4. CMD penceresinde herhangi bir tuşa basın
  5. Yarasa dosyası bittiğinde imleç sonraki satıra taşınır
  6. CMD penceresi kalır

Bu sadece bir makinede olur. Bunun neden olabileceğini bilen var mı? Bu bir test VM'sidir ve belki de yeniden inşa edilmelidir, ama beni meraklandırıyor. Teşekkürler

Basit yarasa dosyamı aşağıdakileri içeren bir dosyayla değiştirdim:

@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

Sonuçlar aşağıda gösterilmiştir:

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

Komut satırı

04/13/2016 Bunu yaparken Görev Yöneticisi'ne bakarak biraz daha öğrendim. Yarasa dosyasını başlattığımda Görev Yöneticisi - Ayrıntılar penceresinde 2 satır görünür ... cmd.exe için 1 ve conhost.exe için 1 satır. Yarasa bittiğinde cmd.exe kaybolur, ancak conhost.exe kalır. Fark ettiğim bir diğer şey de, daha önce belirttiğim gibi Windows Gezgini klasöründen gerçekten çıkmak zorunda olmamanız ... Tek yapmanız gereken, Explorer penceresinde herhangi bir yeri tıklamaktır. Explorer penceresinde hiçbir yere tıklamazsam, yarasa dosyasının CMD penceresi normal olarak kapanır ve her iki görev de beklediğimiz gibi ayrıntılar penceresinden kaybolur.


2
Maalesef yardım edemem. Ancak, sorununuzu tam olarak anlatan iyi yazılmış bir soru sağlama konusunda sizi tamamlamalıyım, posterlerin bu şekilde iyi yazılmış bir soru yazmak için daha fazla zaman ayırmasını diliyorum. Tabii ki Win 10 makinemdeki davranışı yeniden oluşturamıyorum. Ve davranışı yalnızca belirli bir makinede gördüğünüz için, neler olup bittiğini teşhis etmek herkes için zor olabilir.
dbenham

Teşekkürler @ dbenham. Bilginize ve toplu iş dosyası etiketi altında SO'ya dağıttığınız bilgeliğe saygı duyuyorum. Bu yüzden Super User'da ilk kez bir posterim ama yeni posterler hakkında ne demek istediğini biliyorum. Evet, birisinin çoğaltabileceğini düşünmüyorum ... sadece belki başka biriyle karşılaşmış olabilir. Bu sadece bir test VM'sidir, bu yüzden kritik değildir. Sadece bir müşterinin makinesinde olması durumunda ne olduğunu bilmek istiyorum.
RGuggisberg

1
@RGuggisberg - Kendi sorularınızı düzenleyebilmek için hesaplarınızı birleştirdiğinizden emin olun. Sorunuzu düzenlediğiniz belirtileri eklemek zorunda değilsiniz, sistem bunu sizin için tamamen gereksiz yapar.
Ramhound

1
Ayrıca exit, CMD penceresini kapatmak için komuttan açıkça bahsettiğim bir geçici çözüm olarak VM'imden birinde de aynı sorunu yaşadım . Belki bu yardımcı olabilir.
manjesh23

1
ConHost.exe işleminin hangi uygulamada beklediğini belirlemek için Kaynak Monitörü Bekleme Zincirini Analiz Et özelliğini denediniz mi?
Xtremity

Yanıtlar:


1

Bu olası değildir, ancak olası tüm şeyleri dışlamışsınızdır. Bir şey içerip içermediklerini görmek için aşağıdaki iki kayıt defteri girdisini kontrol edin:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

veya

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor

Bir toplu iş dosyasını her çalıştırdığınızda oradaki her şey çağrılır ve eğer varsa cmd /kbu davranışa neden olur.


Teşekkürler ... o da değil. Bu sadece bir test makinesi, bu yüzden artık anlamaya çalışmıyorum.
RGuggisberg

0

Bunu denedin mi?

@echo off
rem some code
pause
cls
exit

Aynı şeyler, ancak duraklama ile aynı izin verir ve kendi kendine çıkar.

Ayrıca, neden @ 'i her şeyin önüne koyuyorsunuz? Neden sadece komutların geri kalanından önce @echo kullanmıyorsunuz?


Evet .. bunu zaten denedim. @ Önsözünde anlaşın. Genellikle yaptığım budur. Bunun önemi yok. Muhtemelen orada ilk testler için komutları görmek için vardı.
RGuggisberg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.