निर्धारित समय पर पीसी बंद करें


1

मेरे पास एक सॉफ्टवेयर (कैलिबर ईबुक मैनेजर) है जो सुबह 6 बजे खबर लाता है। मैं निम्नलिखित करना चाहता हूं:

  1. कंप्यूटर पर 5:50 बजे जागो अगर पहले से नहीं है। (आसानी से बायोस में किया जाता है)
  2. एक अनुसूचक 5:55 पर कैलिबर खोलता है (किया)
  3. कैलिबर समाचार को शुरू करते ही उसे प्राप्त करता है।

उपरोक्त चरणों को पूरा करना आसान था, लेकिन कुछ समस्याएं हैं। मैं पीसी IF और केवल IF को बंद करना चाहता हूं यदि इसे 5:50 पर स्वचालित रूप से शुरू किया गया था। यदि, किसी कारण से, पीसी पहले से ही था, तो मैं इसे बंद नहीं करना चाहता।

कैसे किया जाना चाहिए?


2
हैक: जब पीसी को बूट किया जाता है, तो स्क्रिप्ट के माध्यम से मान लिखें, जैसे कि समय पर। इस मान को अपने पीसी की फ़ाइल में सहेजें। फिर, शटडाउन समय पर, इस फ़ाइल का मान जांचें और उसके अनुसार कार्य करें।
डेव

शांत विचार, इसके लिए एक स्क्रिप्ट लिखी, इसे बचाने की आवश्यकता के बिना। :)
चार्म_क्वार्क

जवाबों:


2

यहाँ AutoHotKey स्क्रिप्ट है जो इसे करती है। सुनिश्चित करें कि आप इस स्क्रिप्ट को बूट पर चलाते हैं। (स्टार्टअप फ़ोल्डर में एक शॉर्टकट जोड़ें)

;
; AutoHotkey Version: 1.x
; Language:       English
; Platform:       Win9x/NT
; Author:         AEonAX
;
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
if (A_Hour=5 and A_Min>55 and A_Min<59) ;Check if script starting time between 05:55 and 05:59 (24Hr clock)
{
Sleep,1000*60*5     ;Waits 5 Minutes
msgbox,4,,Will Shutdown in 60 seconds. Do you want to Stop the Shutdown.,60 ;Shows a msgbox for 60 seconds, If no response then shutsdown
ifmsgbox,Yes
    MsgBox Shutdown Cancelled
else
    Shutdown,1
}

3

चूंकि हालत केवल तभी रीसेट करने के लिए है जब कंप्यूटर को 5:50 पर स्वचालित रूप से बूट किया गया था, मुझे लगता है कि बूट समय पर भरोसा करने का एक तरीका होगा । आप यह पता लगाने के लिए मिनट टाइमर को समायोजित कर सकते हैं कि क्या BIOS 5:50 पर कंप्यूटर शुरू करता है, बूट समय सिस्टम द्वारा क्या देखा जाता है। लेकिन यह एक विस्तार है।

शटडाउन का पता लगाने और बूट समय का पता लगाने के लिए आप निम्नलिखित पॉवरशेल स्क्रिप्ट का उपयोग कर सकते हैं:

# GETTING BOOT TIME
$last_boot_date_time = Get-WmiObject win32_operatingsystem | select @{LABEL='LastBootUpTime';EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}}

# SELECTING HOUR:MINUTES:SECONDS PART OF THE DATE
$last_boot_time_only = $last_boot_date_time | foreach { ([String]$_).split(" ")[1] }

# CHECKING IF BOOT TIME EQUALS 05:50
# IF SO - INITIATE SHUTDOWN
if ( $last_boot_time_only.split(":")[0] -eq "05" -and $last_boot_time_only.split(":")[1] -eq "50")
{ 
    Write-host "Shutting down in 10 seconds."; 
    shutdown -s -f -t 10
}

यह मान रहा है कि आप विंडोज़ को पावरशेल संस्करण 1 या 2 के साथ उपयोग कर रहे हैं। यदि आपके पास पावरशेल का उच्च संस्करण है, तो आप बूट समय के साथ मिलने वाले कमांड को बदलना चाह सकते हैं। Get-CimInstance -ClassName win32_operatingsystem | select lastbootuptime


बूट समय हर बूट के साथ थोड़ा भिन्न नहीं होगा?
harveyslash

यह थोड़ा भिन्न हो सकता है, लेकिन जब तक आप कुछ बड़ा बदलाव नहीं करते हैं, यह वास्तव में कितना भिन्न हो सकता है? अधिकतम कुछ सेकंड। मुझे लगता है कि यह मामूली मुद्दा है जिसे अतिरिक्त के साथ तय किया जा सकता है यदि स्थिति।
mnnnc

0

नीचे दी गई बैच स्क्रिप्ट का प्रयास करें, यह सिस्टम अपटाइम पर निर्भर करता है। जब आप इसे उचित समझें, तो इसे समयबद्धक के साथ चलाएँ

@echo off
setlocal enabledelayedexpansion

for /f "tokens=2 delims=," %%a in ('systeminfo ^| findstr Boot ^| findstr System') do (
  set output=%%a
  set /a hrs=!output:~1,1!
  set mins=!output:~3,2!
 ::echo !output!
 ::echo !hrs! 
 ::echo !mins!
if !hrs! == 5 (
    if !mins! == 50 (
        shutdown -s -f -t 100
    )
) 

)

अच्छी तरह से यह विचार है, आवश्यकतानुसार ट्विक करें

स्पष्टीकरण।

  1. उस समय को निकालें, जिस पर कंप्यूटर स्विच किया गया था,

systeminfo ^ | findstr बूट ^ | सिस्टम खोज

systeminfo के पास वहां बहुत सारी जानकारी है, इसलिए हम केवल उस पैरामीटर को फ़िल्टर कर रहे हैं जिसकी हमें आवश्यकता है जिसे हम ढूंढ रहे हैं। जैसे,

C: \ Users> systeminfo | बूटस्ट्रस्ट बूट सिस्टम |

सिस्टम बूटटाइम: 12/4/2014, 7:20:37 पूर्वाह्न

  1. केवल उस समय फ़ील्ड का चयन करें जिसे अल्पविराम द्वारा अलग किया गया है

for / f "tokens = 2 delims =," %% a ('systeminfo ^ | findstr बूट ^ | खोज प्रणाली') do (सेट आउटपुट = %% a)

और उस पूरे स्ट्रिंग में केवल 1 वर्ण (1 स्थान), 3 और 4 वर्ण (2 स्थान) का चयन करें

सेट / एक घंटे =! आउटपुट: ~ 1,1 सेट मिन्स =! आउटपुट: ~ 3,2!

केवल घंटा और मिनट देने के लिए

  1. यदि समय मैच है तो शटडाउन करने के लिए IF फ़ंक्शन।

अगर! == 5 (

  if !mins! == 50 (

      shutdown -s -f -t 100

पुनश्च: यह देखने के लिए टिप्पणी है कि कोड में कोई गलती है,

:: गूंज! उत्पादन!

:: गूंज! घंटे!

:: गूंज! मिनट!


यदि आप केवल एक ही चरित्र की जांच करते हैं ~38,1- तो उसे 15:50 पर भी ट्रिगर करके मौका मिलेगा? बस एक विचार :)
mnnnc

ओह, आप सही हैं .. मुझे इसे संशोधित करने दें, धन्यवाद
चार्म_क्वार

मुझे लगता है कि यह अभी भी काम करेगा, क्योंकि यदि दूसरा चरित्र आता है, तो यह दर्ज करने की स्थिति में आ जाएगा, और यह शटडाउन आरंभ करने के लिए यदि फ़ंक्शन से मेल नहीं खाता है।
चार्म_क्वार

मैं cmd ​​में इतना नहीं हूं। क्या आप बता सकते हैं कि आपकी स्क्रिप्ट क्या कर रही है? शायद टिप्पणियाँ जोड़ें?
harveyslash

1
मैंने इसे स्पष्टीकरण के साथ संशोधित किया है, आशा है कि यह मदद करता है। इसे कॉपी करें और '.bat' फ़ाइल में सहेजें। ;)
चार्म_क्वार

-1

विंडोज के लिए nncron का प्रयास करें http://www.nncron.ru/help/help.htm अंग्रेजी संस्करण


कृपया अपने उत्तर का विस्तार करें और बताएं कि प्रश्न में उल्लिखित विशिष्ट समस्या के लिए सॉफ़्टवेयर का उपयोग कैसे करें।
slhck
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.