Soru Batch dosya komutu PAUSE çalışmıyor


Birkaç şeye yardımcı olmak için basit bir toplu iş dosyası oluşturuyorum ve kullanıcının çıkmadan önce görmesini istediğim bazı yönergelerim var. Şu anda, pencere çok hızlı kapanıyor. Ben de ekledim PAUSE Dosyanın sonunda, ancak çalışmak istemiyor.

SO ile ilgili diğer sorulara baktım ve satır sonlarının olduğundan emin olmak için kontrol ettim. CRLF ve sahip olduğum CRLF dosyanın sonunda.

Baska öneri?


44
2018-01-12 06:46


Menşei


Başka bir şey yanlış yapıyorsun. Tekrar denedim ve benim için gayet iyi çalışıyor. - Cody Gray♦
Dürüstçe nedenini bilmiyorum ama bugün çalışmaya başladı. Bunun için özür dilerim ama ne olduğu hakkında hiçbir fikrim yok. Senaryoyu bile değiştirmedim! - Samaursa


Cevaplar:


Son komut başarısız olursa duraklama çalışmaz.

Çalıştığınız komutun arkasına "çağrı" yazarak (duraklamadan önceki komut ne olursa olsun) bunu düzeltebilirsiniz, daha sonra duraklama çalışacaktır.

Örneğin, şu şekilde görünen bir phpunit toplu iş dosyası vardı:

phpunit tests/sometests.php
pause

Phpunit başarısız olduğunda, duraklamadan sadece çıkıldı. Bunu değiştirmek, doğru bir şekilde duraklattı:

call phpunit tests/sometests.php
pause

108
2018-03-07 05:24



Bunun için teşekkürler, benim için de çalıştı. Bir yan notta, başarısız olması gerekmez gibi görünüyor, daha önce komut herhangi bir çıkış kodu (başarılı olsa bile) varsa, pencereyi kapatmak gibi görünüyor. - dann.dev
CALL iyi çalıştı. - JSmyth
Ekleme call Windows 10 komut istemi yönetici olarak çalışan benim için hiçbir etkisi yoktu. Nedenini bilmiyorum pause Toplu iş dosyalarımda (AutoHotKey tarafından açılan) komut, aniden çalışmayı durdurdu. Ne değiştiğini bilmiyorum. Haftalarca çalışmışlardı. - Ryan
Tim'in cevabına ek olarak, pencerenin her zaman görüntülenmesini istiyorsanız, .bat dosyasını aşağıdaki gibi yazabilirsiniz: call phpunit tests / sometests.php cmd / k - Justin


Duraklamadan önceki son komut başarılı bir şekilde yürütülür mü? Komut dosyanızı paylaşmaya dikkat et - en azından son birkaç komut?

Alternatif olarak, Windows7'yi kullandığınız için, Zaman Aşımı komutunu deneyin ve çalışıp çalışmadığını görün.


3
2018-01-12 06:57



Eğer pause  olduğu denir, işe yarayacaktır. kullanma timeout bunun yerine bunu değiştirmeyecektir (bunun yerine kabuk yerleşimi yerine ayrı bir program çağırması hariç). Benim tahminim bir goto :eof veya exit /b önce pause (Alt programların olduğu toplu iş dosyalarında nadir değildir - yalnızca bunları yürütmek için sonuna kadar komut ekleyemezsiniz). - Joey
Son komut bir istisna atarsa ​​ne yaparsınız, bu benim durumum? - Juan José Melero Gómez


Echo'da bile sorunlar yaşıyordum ... Uzun toplu iş dosyasının neden olduğu farz edildi ... Duraklama çalışıyordu ancak duraklama değildi, neredeyse durdurma işleminden sonra bir tuşa basmak gibiydi.

Yukarıda önerilen çözümler denedim; hiçbiri işe yaramadı.

Yani sadece gelecekteki referans için, yaptığım şey buydu:

Temel olarak sadece "duraklat> nul && pause> nul"; her zaman çalışır.

@echo off

CALL :ForcePause "Press any key to resume."
ECHO.
ECHO Hello World!
ECHO.
CALL :ForcePause "Press any key to exit."

EXIT

REM You can remove echo if you don't want to pass custom string for pause
:ForcePause
echo %~1
pause > nul && pause > nul
GOTO :EOF

2
2018-01-30 16:43



pause > nul kesinlikle çalışır, sadece mesajı vermez press any key... - T.S.
Mükemmel bir dünyada eminim, ama bazı zamanlarda bahsettiğim gibi bu çözüm bu yüzden olmaz. - Zunair


Sanırım sorunun nerede olduğunu biliyorum, aynı problemi yaşadım. Bu şekilde yapıyorsanız, yeni bir dosya oluşturup içine toplu iş bilgilerini koyarsınız ve normal metin gibi kaydedersiniz ve bundan sonra uzantıyı yeniden adlandırırsınız. Metin editörü ile kaydetmelisiniz ve oradan "Toplu iş dosyası" nı seçmelisiniz.bat;.cmd; *. nt) "örneğin Notepad ++, muhtemelen kodlama nedeniyle bunun böyle olmasını ve bunu tamamlayacağım. GL! :)


1
2018-04-25 23:34





Tim'in cevabına ek olarak, pencerenin her zaman görüntülenmesini istiyorsanız, .bat dosyasını şöyle yazabilirsiniz:

call phpunit tests/sometests.php
cmd /k

0
2018-01-27 04:33



Lütfen Tim'in cevabına yorum olarak gönderin. Bu kendi başına tam bir cevap değildir. - Marcel
@Marcel cevabımı düşürdünüz mü, sadece yorum yerine cevap olarak bırakıyorum? - Justin
Evet yaptım. Güzel, ama bu gerçekten bir yorum olmalı. Bu kısa ve kesinlikle cevabı ile çok yakından ilişkili. - Marcel
@Marcel ok Orijinal yayına bir yorum ekledim, ama cevabımı burada da bırakacağım, yorumdaki kod biçimi net değil. - Justin


Aynı problemim var. Bu iki nedenden dolayı oluşur:
Birincisi ne zaman toplu iş dosyasını yönetici olarak çalıştırma.

Toplu iş dosyasını masaüstüme taşıdım ve yönetici olarak denedim ve iyi çalışıyor.
Toplu iş dosyasını herhangi bir disk köküne (C: \ D: \ etc gibi) taşımaya çalıştım ve düzgün çalışıyor.
Toplu iş dosyasını boşluklarla herhangi bir dizine taşımaya çalıştım ve düzgün çalışıyor.

İkinci ve ana sebep: Toplu dosya dizininde bazı özel karakterler (@ ya da bunun gibi şeyler) vardı.

Sadece bu özel karakteri bulun ve klasör adından kaldırın. Ve doğru şekilde çalışacaktır.


0
2018-05-24 02:29