Apakah ada cara untuk melihat berapa banyak waktu yang tersisa sebelum penghentian yang dijadwalkan pada Windows 7?
Dengan shutdown terjadwal yang saya maksud adalah shutdown (atau restart) yang dijadwalkan menggunakan shutdown.exe
aplikasi baris perintah , misalnya:
shutdown /t 600 /s
Itu akan memunculkan kotak pesan yang mengatakan ada 10 menit sampai shutdown, dan waktu sistem shutdown yang sebenarnya.
Setiap saat, lebih dari 600
detik, gunakan pesan balon.
Samar-samar saya ingat XP menyediakan monitor kemajuan GUI, dengan hitungan mundur.
Bagaimana cara kerjanya? Waktu shutdown yang tersisa atau waktu yang dijadwalkan harus disimpan di suatu tempat, bagaimana saya bisa mengakses ini?
Preferensi saya adalah beberapa metode melalui baris perintah (yaitu non-GUI). Lebih penting lagi, apakah ini dapat dicapai dalam Windows, yaitu tanpa program pihak ketiga?
Jika ini tidak dapat dilakukan dengan utilitas Windows standar (dan saya berbatasan dengan wilayah Stack Overflow di sini), apakah ada fungsi Windows API (atau .NET, yang bahkan dapat digunakan dalam PowerShell!)? Entah akan lebih disukai daripada beberapa program pihak ketiga acak.
/c <time>
) tidak.Jawaban:
Pertanyaan itu menarik jadi saya menulis batch yang dapat melakukan pekerjaan untuk Anda.
Pada dasarnya ini adalah penghitung waktu mundur, saya tidak memasukkan
shutdown
perintah untuk ini tetapi meninggalkannya sebagai pekerjaan rumah. Perhitungannya tidak akurat, ini tidak peduli tahun kabisat, panjang bulan, ... ini terutama untuk keterbacaan karena saya ingin tetap mudah dipelajari.Saat ini ada dua file melakukan pekerjaan bersama, satu mulai timer dan lainnya, ketika dipanggil, memberi tahu berapa banyak waktu yang telah berlalu dari timer mulai. Kedua file ini dapat dengan mudah digabungkan menjadi satu skrip cmd, dengan cara ini Anda dapat membuat beberapa baris dapat digunakan kembali ( seperti metode yang didefinisikan ) juga.
Oke, mari kita lihat skrip,
Ini adalah
StartTimer.cmd
:Sejalan dimulai dengan
FOR /F "skip=1 ...
:1. Tanyakan
wmic
waktu dan tanggal saat ini.2. Lewati baris pertama output, yaitu heading, oleh
skip=1
3. Baca nilai menggunakan
tokens=1-6
makna yang%%a-%%f
dipisahkan oleh Spaceor
TAB.4. nilai Store untuk variabel
%DateY%
, ...%TimeH%
,%TimeM%
, ...Setelah itu di awal,
SET /A EPOCH=...
kami menggunakan ekspresi yang menghitung detik berlalu1.1.1970
( ini adalah perkiraan sederhana, bukan waktu unix nyata. Lihat Google jika Anda perlu akurat ).Kemudian pada baris terakhir
ECHO %EPOCH% > ...
tulis waktu yang dihitung ke file bernama "Timer.start.state
".Dan di sini
GetTimerValue.cmd
:Di sini aliran kode tidak linier dari atas ke bawah. Pertama kita
GOTO CHECKFILE
memberi label sehingga perintah eksekusi benar-benar dimulai pada baris yang mengatakan:CHECKFILE
. Banyak hal di sini sama seperti denganStartTimer.cmd
jadi saya hanya menjelaskan baris baru atau yang diubah.Pertama kita periksa apakah file negara
Timer.start.state
ada, jika tidak maka hentikan pesan kecerdasan. Jika penghitung waktu dimulai dan file ada, maka kami melanjutkan dan melakukan penghitungan:1. Lompat ke
:TIMEOUT
tempat kami mengeluarkan detik yang telah berlalu. Anda dapat memilih label yang lebih baik untuk itu ...2.
SET /P %Timer% ...
membaca waktu mulai dari file dan menetapkan nilai ke%Timer%
variabel.3.
SET /A Elapsed ...
menghitung detik antara waktu mulai dan sekarang.4.
ECHO "Seconds ...
menggemakan nilai yang dihitung (detik sejak penghitung waktu mulaiCara mendapatkan sisa waktu:
Anda dapat mengurangi
%Elapsed%
dari%MaxTime%
:OKE, cukup dijelaskan. Berikut ini skrip lengkap
Timer.cmd
:Pada titik ini, lupa semua yang sudah dikatakan. File batch ini di sini berfungsi sendiri sehingga tidak ada yang terpisah
StartTimer.cmd
atauGetTimerValue.cmd
hanya iniTimer.cmd
. Pada dasarnya masih sama tetapi aliran kode berbeda dan penggunaannya juga sama sekali berbeda. Namun ini tidak menyimpan status ke file sehingga Anda tidak bisa lagi mendapatkan nilai waktu setelah logoff / reboot, jika Anda memerlukan contoh penggunaan di atas untuk menyimpan / membaca status ke / dari file.Penggunaan / bantuan
Timer.cmd
dicetak saat dijalankan tanpa argumen. Saya belum sepenuhnya menguji ini dan mungkin ada beberapa kesalahan ketik dll, args tidak sangat mudah diperiksa.Integrasikan dengan
shutdown
atau perintah lain:File
poweroff.cmd
:Penggunaan:
poweroff <wait_seconds>
untuk memulai penghentian waktu danTimer get
untuk mendapatkan sisa waktu.sumber
StartTimer.cmd
harus secara eksplisit dipanggil. Saya telah menulis sebuah program kecil untuk menyelesaikan masalah saya, yang akan saya posting ketika saya kembali ke komputer saya.shutdown.exe
, yang disebutshutdown_original.exe
. Itu akan memeriksa/t
bendera dan jika ada, buat file dengan waktu mulai dan akhir disimpan. Pada waktu pengambilan (/retrieve
bendera), itu akan memeriksa log peristiwa untuk melihat apakah startup atau batal dilakukan sejak timer dimulai. Saya tidak yakin bagaimana ini akan menangani hibernasi. Saya tidak akan memposting kode atau program: ini adalah kekacauan kereta. Dan untuk membuat programnya bekerja, saya harus banyak dipusingkan dengan pengaturan keamanan, yang tidak ingin saya promosikan.shutdown.exe
panggilan dan mencatat waktu ke file, yang adalah apa yang Anda lakukan dan mengapa saya menerima ini.