Beberapa perintah pada satu baris dalam file batch Windows


Jawaban:


181

Menggunakan:

echo %time% & dir & echo %time%

Ini, dari memori, setara dengan pemisah titik koma di bashdan shell UNIXy lainnya.

Ada juga &&(atau ||) yang hanya mengeksekusi perintah kedua jika yang pertama berhasil (atau gagal), tetapi satu ampersand &adalah yang Anda cari di sini.


Itu mungkin memberi Anda waktu yang sama namun karena variabel lingkungan cenderung dievaluasi saat dibaca daripada dieksekusi.

Anda dapat mengatasinya dengan mengaktifkan ekspansi tertunda:

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

Itu dibutuhkan dari baris perintah. Jika Anda melakukan ini di dalam skrip, Anda dapat menggunakan setlocal:

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

Terima kasih atas jawabannya. Masalah apakah ini berfungsi sebagian. % waktu% pertama dan terakhir mencetak waktu yang sama bahkan ketika perintah (di tengah) membutuhkan setidaknya 40 detik untuk menyelesaikan. (Saya menjalankan skrip saya alih-alih perintah dir)
Raghuram

1
Itu karena variabel lingkungan dievaluasi saat perintah dibaca daripada dieksekusi. Saya akan memperbarui jawabannya.
paxdiablo

Masalahnya masih berlanjut. Script keluar dengan kode 1. Tapi masih gema kedua mencetak waktu yang sama Lihat op ini 12: 57: 56.93 Sebuah thread keluar saat 3 thread sedang berjalan. 12:57: 56.93
Raghuram

3
Saya cenderung menggunakan time /t(atau echo.|time) daripada echo %time%menghindari masalah.
Joey

1
Ada ide bagaimana caranya agar% errorlevel% benar pada panggilan berikut?
BradLaney
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.