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.