Bir Windows toplu iş dosyasında tek bir satırda birden çok komut


Yanıtlar:


181

kullanın:

echo %time% & dir & echo %time%

Bu, bellekten, bashnoktalı virgül ayırıcıya ve diğer UNIXy kabuklarına eşdeğerdir.

Ayrıca &&(veya ||), yalnızca ilk komut başarılı olursa (veya başarısız olursa) ikinci komutu çalıştırır, ancak tek ve işareti &burada aradığınız şeydir.


Bu muhtemelen size aynı zamanı verecektir, ancak ortam değişkenleri yürütmek yerine okuma üzerinde değerlendirilme eğilimindedir.

Gecikmeli genişletmeyi açarak bunu aşabilirsiniz:

pax> cmd /v:on /c "echo !time! & ping 127.0.0.1 >nul: & echo !time!"
15:23:36.77
15:23:39.85

Bu, komut satırından gereklidir. Bunu bir komut dosyası içinde yapıyorsanız, sadece şunları kullanabilirsiniz setlocal:

@setlocal enableextensions enabledelayedexpansion
@echo off
echo !time! & ping 127.0.0.1 >nul: & echo !time!
endlocal

Cevap için teşekkürler. Sorun, kısmen çalışıyor olması. ilk ve son% time%, komutun (ortada) tamamlanması en az 40 saniye sürse bile aynı anda yazdırır. (dir komutu yerine
betiğimi

1
Bunun nedeni, komut çalıştırılmak yerine okunduğunda ortam değişkenlerinin değerlendirilmesidir . Cevabı güncelleyeceğim.
paxdiablo

Yine de sorun devam ediyor. Komut, kod 1 ile çıkıyor. Ama yine de ikinci eko aynı anda yazdırıyor. Buna bakın 12: 57: 56.93 3 iş parçacığı çalışırken bir iş parçacığından çıkıldı. 12: 57: 56.93
Raghuram

3
Sorunu aşmak yerine time /t(veya echo.|time) kullanma eğilimindeydim echo %time%.
Joey

1
Aşağıdaki çağrılarda% errorlevel% 'in nasıl doğru olmasını sağlayacağınıza dair bir fikriniz var mı?
BradLaney
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.