Dur tahmin edeyim, gecenin geç saatlerinde başlattığın indirmenin tamamlanmasına 40 dakika kaldı ve ne uykuna karşı gelebiliyorsun ne de indirme bitmeden bilgisayarı kapatmak istiyorsun. O zaman hazırlamış olduğumuz bu .bat uzantılı program tam sana göre!
Peki nasıl çalışacak bu program? hemen anlatalım:
İlk önce altta bulunan kodu kopyalıyoruz.
@echo off
setlocal enabledelayedexpansion
color 06
REM ZAMAN AYARLI BILGISAYAR KAPAT
echo.
echo -Merhaba, bu komut bilgisayarinizin belirli bir sure sonra kapanmasini saglar.
echo.
echo -Lutfen bilgisayarinizi kilitlemeyin, aksi taktirde kapatma islemi gerceklesmeyecektir.
echo.
echo -Geri sayim islemini iptal etmek istiyorsaniz eger bu pencereyi kapatmaniz yeterli olacaktir.
echo.
echo.
echo.
:: Geri sayim ve kullanici iptali icin gereken degiskenleri tanimla
set "cancelled=0"
:: Komut dosyasini arka planda calistir
start "" cmd /c "goto :wait_for_cancel"
:input_hours
:: Kullanıcıdan saat degerini al
set /p hours="Bilgisayarinizin kac saat icinde kapanmasini istiyorsunuz? (saat cinsinden, en fazla 24): "
:: Saat sinir kontrolu
if "%hours%"=="" (
echo Hata: Saat girilmedi.
goto input_hours
) else if %hours% LSS 0 (
echo Hata: Saat negatif olamaz.
goto input_hours
) else if %hours% GTR 24 (
echo Hata: Saat 24'ten fazla olamaz.
goto input_hours
)
:: Saat 24 ise direkt geri sayim baslat
if %hours% EQU 24 (
set /a totalSeconds=24 * 3600
goto countdown
)
:input_minutes
:: Kullanıcıdan dakika degerini al
set /p minutes="Bilgisayarinizin kac dakika icinde kapanmasini istiyorsunuz? (dakika cinsinden, en fazla 60): "
:: Dakika sinir kontrolu
if "%minutes%"=="" (
echo Hata: Dakika girilmedi.
goto input_minutes
) else if %minutes% LSS 0 (
echo Hata: Dakika negatif olamaz.
goto input_minutes
) else if %minutes% GTR 60 (
echo Hata: Dakika 60'tan fazla olamaz.
goto input_minutes
)
:: Dakika 60 ise ve saat 24'ün altinda bir deger ise direkt geri sayim baslat
if %minutes% EQU 60 (
set /a totalSeconds=%hours% * 3600 + 60 * 60
goto countdown
)
:input_seconds
:: Kullanıcıdan saniye degerini al
set /p seconds="Bilgisayarinizin kac saniye icinde kapanmasini istiyorsunuz? (saniye cinsinden, en fazla 60): "
:: Saniye sinir kontrolu
if "%seconds%"=="" (
echo Hata: Saniye girilmedi.
goto input_seconds
) else if %seconds% LSS 0 (
echo Hata: Saniye negatif olamaz.
goto input_seconds
) else if %seconds% GTR 60 (
echo Hata: Saniye 60'tan fazla olamaz.
goto input_seconds
)
:: Saat, dakika ve saniyeyi toplam saniyeye cevir
set /a totalSeconds=%hours% * 3600 + %minutes% * 60 + %seconds%
:countdown
:: Geri sayimi baslat
:: Kalan sureyi hesapla
set /a remainingSeconds=%totalSeconds% - 1
set /a hoursRemaining=!remainingSeconds! / 3600
set /a minutesRemaining=(!remainingSeconds! %% 3600) / 60
set /a secondsRemaining=!remainingSeconds! %% 60
:: Ekrana kalan sureyi yazdir
cls
echo Kalan Sure: !hoursRemaining! saat, !minutesRemaining! dakika, !secondsRemaining! saniye
:: 1 saniye bekle
timeout /t 1 /nobreak >nul
:: Kalan sureyi guncelle
set /a totalSeconds=!remainingSeconds!
:: Kalan sure bitene kadar donguyu devam ettir
if !remainingSeconds! GEQ 0 (
if %cancelled% EQU 1 goto :cancelled
goto countdown
)
:: Bilgisayari kapat
shutdown /s /t 0
:: Bilgisayar kapanacak mesaji
echo Bilgisayar kapaniyor...
pause
:wait_for_cancel
:: Kullanıcıdan iptal icin tusaya basmasini bekle
pause >nul
set "cancelled=1"
:cancelled
:: Islemi iptal et ve kullaniciya bilgi ver
echo Geri sayim iptal edildi.
exit /b
Kodumuzu ekledikten sonra not defterini Farklı Kaydet diyerek dosya adını "BilgisayariKapat.bat" yazıp masaüstüne kaydediyoruz ve işte bu kadar!
Artık ihtiyacın olduğunda tek yapman gereken masaüstüne kaydettiğin dosyayı çalıştırarak sisteminin otomatik kapanması için gereken süreyi saat, dakika ve saniye cinsinden sırasıyla belirlemek.
Not: Geri sayım başladıktan sonra ekranınızı kilitlemeniz işlemin iptal olmasına sebep olur. Onun dışında gönül rahatlığı ile kullanabilirsiniz :)
Not 2:Dosya adını farklı yazmak isterseniz sonuna mutlaka .bat uzantısını ekleyip kaydedin.