2010-04-19 9 views
6

बैट फ़ाइल एबैट को कॉल करने के लिए अगर 1 9:45 से कम है और कॉल करने के लिए कॉल करें बीबीट अगर समय 1 9:45 से अधिक है (मैं इस मामले में विंडोज़ टास्क शेड्यूलर का उपयोग नहीं कर सकता क्योंकि मेरे पास सेटिंग है जो इस डाउनलोड मैनेजर के माध्यम से प्रत्येक बार फ़ाइल डाउनलोड होने पर मेरे डाउनलोड मैनेजर को इस पैरेंट बैट फ़ाइल को ट्रिगर करने के लिए बनाता है)बैट फ़ाइल एबीट को कॉल करने के लिए अगर 1 9:45 से कम है और बीबीट को कॉल करने के लिए 1 9:45

उत्तर

1

विंडोज कार्य शेड्यूलर का उपयोग करने के बारे में कैसे?

+0

मैं इस मामले में विंडोज़ टास्क शेड्यूलर का उपयोग नहीं कर सकता क्योंकि मेरे पास सेटिंग है जो मेरे डाउनलोड मैनेजर को इस डाउनलोड मैनेजर – dhiraj05

9

आप एक आधार रेखा के रूप में निम्नलिखित कोड का उपयोग कर सकते हैं (आप bat फ़ाइलों का उपयोग कर सकते हैं, लेकिन मैं एक विस्तार के रूप cmd पसंद करते हैं):

@echo off 
setlocal enableextensions enabledelayedexpansion 
set tm=%time% 
:: Test data on lines below. 
:: set tm=18:59:59.00 
:: set tm=19:00:00.00 
:: set tm=19:44:59.00 
:: set tm=19:45:00.00 
:: set tm=23:59:59.99 
set hh=!tm:~0,2! 
set mm=!tm:~3,2! 
if !hh! lss 19 (
    call a.cmd 
    goto :done 
) 
if !hh! equ 19 (
    if !mm! lss 45 (
     call a.cmd 
     goto :done 
    ) 
) 
call b.cmd 
:done 
endlocal 

ध्यान रखें कि %time% एक ही प्रारूप है के रूप में आप time से मिलता है आदेश और यह लोकेल पर निर्भर हो सकता है। मुझे जो प्रारूप मिल रहा है वह लगभग 0:15 बजे 20:17:28.48 है लेकिन आपका परिणाम अलग हो सकता है।

यदि यह है, तो hh और mm सेट करते समय बस सबस्ट्रिंग समायोजित करें। आदेश:

set mm=!tm:~3,2! 

सेट mmtm के दो पात्रों से संबंधित पर 3 ऑफसेट (जहां ऑफसेट 0 पहला वर्ण है)।


आप स्पेगेटी कोड का एक बड़ा प्रशंसक नहीं कर रहे हैं, यहां तक ​​कि बैच में हैं, तो आप भी इस्तेमाल कर सकते हैं:

@echo off 
setlocal enableextensions enabledelayedexpansion 
set tm=%time% 
:: Test data on lines below. 
:: set tm=18:59:59.00 
:: set tm=19:00:00.00 
:: set tm=19:44:59.00 
:: set tm=19:45:00.00 
:: set tm=23:59:59.99 
set hh=!tm:~0,2! 
set mm=!tm:~3,2! 
if !hh! lss 19 (
    call a.cmd 
) else (
    if !hh! equ 19 if !mm! lss 45 (
     call a.cmd 
    ) else (
     call b.cmd 
    ) 
) 
endlocal 
+0

के माध्यम से फ़ाइल डाउनलोड होने पर इस पैरेंट बैट फ़ाइल को ट्रिगर करने के लिए बनाता है बस उत्सुक: क्या विंडोज़ में कोई और नहीं है बैच भाषा? –

+0

क्या विंडोज बैच भाषा में कोई 'या' नहीं है? :) –

+2

@ एड्रियनो, यह भाषाओं का सबसे अनुकूल नहीं है लेकिन आप कुछ चीजें कर सकते हैं: 'else' और 'और' दिखाए जाते हैं। मैं आम तौर पर ध्वज सेट करते समय 'या' एकाधिक के साथ अनुकरण करता हूं, फिर उस ध्वज के आधार पर 'if''। आदिम लेकिन, यदि आपके पास एकमात्र उपकरण एक विशाल का जबड़ा है, तो आप बहुत उग्र नहीं हो सकते :-) – paxdiablo

2

मैं हाल ही में कुछ इसी तरह कर रहा था और मेरे समाधान पाश के लिए एक था - नहीं आश्चर्यजनक कॉम्पैक्ट लेकिन काम किया है:

for /f "tokens=1,2,3,4 delims=:,. " %%i in ("%time%") do (

echo Timegrab = %%i %%j %%k %%l 
set hr=%%i 
set mn=%%j 
set sc=%%k 
set ms=%%l 

) 

फिर तुम सब करने की आवश्यकता होगी जांच करने के लिए एक अगर बयान कि क्या% घंटा% थी है कम से कम 19 और% एम.एन.% थी कम से कम 45

संबंधित मुद्दे