2011-12-28 17 views
5

मुझे वर्तमान दिन/माह/वर्ष निकालने के लिए बैच फ़ाइल वाक्यविन्यास का एक सरल तोड़ नहीं मिल रहा है।बैच फ़ाइल दिन/माह/वर्ष वाक्यविन्यास?

मेरे पास एक निर्देशिका नाम के रूप में उपयोग किए गए चर को घोषित करने के लिए निम्न वाक्यविन्यास है;

set folder=%date:~10,4%%date:~7,2%%date:~4,2% 

किसी को भी कुछ प्रकाश डाला सकता है (या एक लिंक पोस्ट) क्या टिल्ड पर डबल प्रतिशत मतलब है? मैं अकेले अंतर्ज्ञान से पूरी तरह से समझने के लिए प्रतीत नहीं कर सकता।

+0

आप इस पोस्ट को देख सकते हैं, महान उदाहरण हैं: http://stackoverflow.com/questions/1192476/windows-batch-script-format-date-and-time –

+0

google "विंडोज बैच फ़ाइल वाक्यविन्यास" –

+1

@ फ़्रेड्रिक , जब आप "विंडोज बैच फ़ाइल सिंटैक्स" Google पर जाते हैं तो उस सूची के ** शीर्ष ** पर होना क्या है :-) – paxdiablo

उत्तर

7

डबल प्रतिशत का मतलब बिल्कुल कुछ भी नहीं है।

echo %firstname%%lastname% 
    \_________/\________/ 
     Two separate expansions. 

टिल्ड आप सबस्ट्रिंग देता है: यह बस जैसे दो चर विस्तार पक्ष-साथ होने का एक परिणाम है। आपके मामले में, %date:~10,4% आपको date पर्यावरण परिवर्तनीय ऑफसेट दस में चार वर्ण देता है (इस मामले में वर्ष Thu 29/12/2011 है, ऑफ़सेट शून्य से शुरू होने के साथ)।

आप Windows कमांड pronpt पर set /? दर्ज करते हैं, यह आप के लिए सभी विकल्प, स्ट्रिंग के अंत से निकालने के लिए नकारात्मक ऑफसेट का उपयोग करने का गंधा चाल सहित व्याख्या करेगा।

हालांकि, आपको यह ध्यान रखना चाहिए कि date पर्यावरण परिवर्तनीय प्रारूप लोकेल पर निर्भर करता है, इसलिए यह सरल स्ट्रिंग निष्कर्षण विंडोज के सभी अंतरराष्ट्रीय संस्करणों में काम करने की संभावना नहीं है (यह मुझे कुछ साल पहले थोड़ा सा)।

ए बेहतर समाधान WMI ऐसे उपयोग करने पर Rob van der Woude's excellent scripting pages के रूप में तिथि घटकों, यहां पूर्णता कॉपी किया लाने के लिए यह है:

FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Dayˆ,Hourˆ,Minuteˆ,Monthˆ,Secondˆ,Year /Format:table') DO (
    IF NOT "%%~F"=="" (
     SET /A SortDate = 10000 * %%F + 100 * %%D + %%A 
     SET /A SortTime = 10000 * %%B + 100 * %%C + %%E 
     SET SortTime=0000000!SortTime! 
     SET SortTime=!SortTime:~-6! 
    ) 
) 
2

~ और %% एस स्ट्रिंग को विभाजित कर रहे हैं (यदि आप केवल कमांड टाइप करते हैं तो यह आपको पूर्ण स्ट्रिंग दिखाता है)।

% दिनांक: ~ 10,4% का मतलब है कि 10 वें चरित्र के साथ अगले 4 वर्ण प्राप्त करें।

विभिन्न क्षेत्रीय सेटिंग्स का उपयोग करके विभिन्न पीसी के लिए भी देखें, क्योंकि वे स्ट्रिंग में उन वर्णों का क्रम बदलते हैं।