दिलचस्प पोस्ट
स्थानीय (फ़ाइल: //) वेबसाइट फ़ेविकॉन फ़ायरफ़ॉक्स में काम करता है, क्रोम या सफारी में नहीं- क्यों? कोणीय 2 दूसरे मॉड्यूल से घटक का उपयोग करें एक्शन बार के तहत प्रोग्रेसबार कैसे मैं Keys.F1 पर कब्जा कर सकता हूँ, पर ध्यान दिए बिना एक फॉर्म पर नियंत्रण? सबवर्जन से चेकआउट एक फाइल JTextField में मूल्य बदलें श्रोता फ़ायरफ़ॉक्स ब्राउज़र में ऑटो-डाउनलोड जावा-सेलेनियम काम नहीं कर रहा है किसी विशिष्ट स्थिति में एआरएएस आंतरिक सूचक सेट करने के लिए कैसे? PHP / एक्सएमएल ट्रेसबैक के बिना पायथन से बाहर कैसे जाए? कैसे Firebase डेटा संशोधन को प्रतिबंधित करने के लिए? प्लस और माइनस साइंस क्या एक विधि के आगे उद्देश्य सी में क्या मतलब है? एंड्रॉइड SpannableString पाठ के पीछे पृष्ठभूमि की स्थापना मास्टर-विस्तार तालिका और संवाद बनाना, बनाने और संपादित करने के लिए एक ही संवाद का पुन: उपयोग कैसे करें जावा में मॉड नकारात्मक संख्या का उत्पादन करता है पहला शब्द चयनकर्ता

फ़ाइल नाम में बैच आदेश दिनांक और समय

मैं कमांड लाइन पर WinZip का उपयोग कर फ़ाइल को संपीड़ित कर रहा हूं I चूंकि हम एक दैनिक आधार पर संग्रह करते हैं, इसलिए मैं इन फ़ाइलों को तिथि और समय जोड़ने की कोशिश कर रहा हूं ताकि प्रत्येक समय में एक नया ऑटो उत्पन्न हो।

मैं एक फ़ाइल नाम उत्पन्न करने के लिए निम्न का उपयोग करता हूं। इसे अपने आदेश पंक्ति में चिपकाएं और आपको दिनांक और समय घटक के साथ एक फ़ाइल नाम दिखाना चाहिए।

echo Archive_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.zip 

उत्पादन

 Archive_20111011_ 93609.zip 

हालांकि, मेरी समस्या एएम बनाम पीएम है । AM समय टिकट मुझे समय 9 देता है (एक प्रमुख रिक्त स्थान के साथ) बनाम 10 स्वाभाविक रूप से दो स्थान लेते हैं

मुझे लगता है कि मेरी समस्या पहले नौ दिनों, पहले 9 महीनों, आदि तक बढ़ जाएगी।

मैं इसे कैसे ठीक कर सकता हूं ताकि अग्रणी रिक्त स्थान के बजाए अग्रणी शून्य शामिल हो, ताकि मुझे Archive_20111011_093609.zip . Archive_20111011_093609.zip ?

Solutions Collecting From Web of "फ़ाइल नाम में बैच आदेश दिनांक और समय"

एक और समाधान:

 for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set datetime=%%I 

यह आपको देगी (लोकेल सेटिंग्स से अलग!):

  20130802203023.304000+120 ( YYYYMMDDhhmmss.<milliseconds><always 000>+/-<timedifference to UTC> ) 

यहां से, यह आसान है:

 set datetime=%datetime:~0,8%-%datetime:~8,6% 20130802-203023 

एक फ़ाइल की "तारीख-समय संशोधित" के लिए एक ही आउटपुट स्वरूप के लिए लोगान के अनुरोध के लिए:

 for %%F in (test.txt) do set file=%%~fF for /f "tokens=2 delims==" %%I in ('wmic datafile where name^="%file:\=\\%" get lastmodified /format:list') do set datetime=%%I echo %datetime% 

यह थोड़ा और अधिक जटिल है, क्योंकि यह केवल पूर्ण पथ के साथ काम करता है, wmic उम्मीद है कि बैकस्लैश दोगुना हो जाएंगे और = को बचाना होगा (पहले एक। दूसरे को आसपास के कोट्स द्वारा संरक्षित किया गया है)।

घंटे निकालें, एक प्रमुख स्थान की तलाश करें, यदि शून्य के साथ जगह मिलती है;

 set hr=%time:~0,2% if "%hr:~0,1%" equ " " set hr=0%hr:~1,1% echo Archive_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%.zip 

आपको खोजना चाहिए; आप शून्य set hr=%hr: =0%जेब के साथ सभी स्थानों को आसानी से बदल सकते हैं 11.11 बजे 14:16

तो मैंने किया:

 set hr=%time:~0,2% set hr=%hr: =0% 

फिर जो भी स्ट्रिंग आप प्रत्येक दो-अंकी घंटा प्राप्त करने के लिए स्वरूपण कर रहे हैं, उसमें %hr% उपयोग करें।

(सबसे लोकप्रिय उत्तर के तहत जेब की टिप्पणी ने मेरे लिए सबसे अच्छा काम किया और यह सबसे आसान है। मैं इसे भविष्य में उपयोगकर्ताओं के लिए और अधिक स्पष्ट करने के लिए यहां पुनर्प्रेषित करता हूं।)

जैसा कि विक्की ने पहले ही बताया है, %DATE% और %TIME% वर्तमान दिनांक और समय को पूरी तरह से (अंतहीन) अनुकूलन योग्य छोटी तिथि और समय प्रारूपों का उपयोग करते हैं।

एक उपयोगकर्ता शुक्रवार Fri040811 08.03 पीएम लौटने के लिए अपनी प्रणाली को कॉन्फ़िगर कर सकता है जबकि दूसरा उपयोगकर्ता 08/04/2011 20:30 को चुन सकता है।

यह एक बैट प्रोग्रामर के लिए एक पूर्ण दुःस्वप्न है

फ़ॉर्मेट को फर्म स्वरूप में बदलने से समस्या ठीक हो सकती है, बशर्ते आप बीएटी फ़ाइल छोड़ने से पहले पिछले प्रारूप को वापस लाएं। लेकिन यह खराब दौड़ परिस्थितियों के अधीन हो सकता है और रद्द किए गए बैट फ़ाइलों में पुनर्प्राप्ति को जटिल कर सकती है।

सौभाग्य से, एक विकल्प है।

आप इसके बजाय WMIC का उपयोग कर सकते हैं। WMIC Path Win32_LocalTime Get Day,Hour,Minute,Month,Second,Year /Format:table एक अचल तरीके से तारीख और समय देता है। फोर FOR /F कमांड के साथ सीधे इसे पार्स करने के लिए बहुत सुविधाजनक

इसलिए, टुकड़ों को एक साथ डालकर, इसे एक शुरुआती बिंदु के रूप में देखें …

 SETLOCAL enabledelayedexpansion FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO ( SET /A FD=%%F*1000000+%%D*100+%%A SET /A FT=10000+%%B*100+%%C SET FT=!FT:~-4! ECHO Archive_!FD!_!FT!.zip ) 

बैच में आप इस तरह से एक चर में मूल्य (99 तक का मूल्य) जोड़ सकते हैं IF 1%Var% LSS 100 SET Var=0%Var%

इसलिए आपको अपनी तिथि और समय घटकों को अलग-अलग चर में पार्स करना होगा, उन सभी को इस तरह का इलाज करना होगा, फिर फ़ाइल नाम बनाने के लिए उन्हें एक साथ वापस जोड़ दें।

हालांकि, दिनांक और समय को पार्स करने के लिए आपकी अंतर्निहित विधि सिस्टम लोकेल सेटिंग पर निर्भर है। यदि आप अपने कोड के लिए खुश हैं तो अन्य मशीनों के लिए पोर्टेबल नहीं होना चाहिए, यह शायद ठीक है, लेकिन यदि आप इसे अलग-अलग अंतरराष्ट्रीय संदर्भों में काम करने की उम्मीद करते हैं तो आपको रजिस्ट्री सेटिंग्स को पढ़कर अलग दृष्टिकोण की आवश्यकता होगी:

 HKEY_CURRENT_USER\Control Panel\International\iDate HKEY_CURRENT_USER\Control Panel\International\iTime HKEY_CURRENT_USER\Control Panel\International\iTLZero 

(यह आखिरी बार नियंत्रण करता है कि क्या समय पर एक अग्रणी शून्य है, लेकिन अभी तक नहीं पता है)।

 @For /F "tokens=1,2,3,4 delims=/ " %%A in ('Date /t') do @( Set DayW=%%A Set Day=%%B Set Month=%%C Set Year=%%D Set All=%%D%%B%%C ) "C:\Windows\CWBZIP.EXE" "c:\transfer\ziptest%All%.zip" "C:\transfer\MB5L.txt" 

यह MB5L.txt लेता है और इसे ziptest20120204.zip पर संपीड़ित करता है यदि 4 फरवरी 2012 को चलाया जाता है

आपके सभी उत्तरों को पढ़ने के बाद, मुझे मेरे लिए सबसे अच्छा समाधान मिला:

 set t=%date%_%time% set d=%t:~10,4%%t:~7,2%%t:~4,2%_%t:~15,2%%t:~18,2%%t:~21,2% echo hello>"Archive_%d%" 

यदि मुझे AM 20160915_ 150101 (एक प्रमुख स्थान और समय के साथ) मिलता है

यदि प्रधान मंत्री मुझे 20160915_2150101

आपका प्रश्न हल हो रहा है, लेकिन …

मुझे यकीन नहीं है कि अगर आप अपनी समस्या का सही समाधान लेते हैं
मुझे लगता है कि आप हर दिन वास्तविक प्रोजेक्ट कोड को संक्षिप्त करने का प्रयास करते हैं।

यह ज़िप और 1 9 80 के साथ संभव है, यह एक अच्छा समाधान था, लेकिन आज आपको एक रिपॉज़िटरी सिस्टम का उपयोग करना चाहिए, जैसे कि तोड़फोड़ या जीआईटी या …, लेकिन ज़िप फ़ाइल नहीं।

ठीक है, शायद यह हो सकता है कि मैं गलत हूँ

उपरोक्त उत्तर से, मैंने एक तैयार-उपयोग वाली फ़ंक्शन बनाई है।

फ्रेंच स्थानीय सेटिंग के साथ मान्य।

 :::::::: PROGRAM :::::::::: call:genname "my file 1.txt" echo "%newname%" call:genname "my file 2.doc" echo "%newname%" echo.&pause&goto:eof :::::::: FUNCTIONS ::::::::: :genname set d1=%date:~-4,4% set d2=%date:~-10,2% set d3=%date:~-7,2% set t1=%time:~0,2% ::if "%t1:~0,1%" equ " " set t1=0%t1:~1,1% set t1=%t1: =0% set t2=%time:~3,2% set t3=%time:~6,2% set filename=%~1 set newname=%d1%%d2%%d3%_%t1%%t2%%t3%-%filename% goto:eof 

मुझे एहसास है कि यह ओपी के लिए एक सवाल है, लेकिन मैं इसे सिर्फ पीसा, और बॉक्स के बाहर सोचने के लिए मुझे खुद पर गर्व महसूस हो रहा है।

http://gnuwin32.sourceforge.net/packages/gawk.htm पर विंडोज के लिए गोक डाउनलोड करें …. तो यह एक एक लाइनर है, बिना सभी क्लोनी डॉस बैच सिंटैक्स के, जहां तारों को विभाजित करने के लिए छोरों के लिए छह लेता है (डब्ल्यूटीएफ ? यह वाकई सचमुच खराब पागल है और एसएडी! … आईएमएचओ बेशक)

यदि आप पहले से ही सी, सी ++, पर्ल, या रूबी को चुनते हैं तो ऐडब्लूके (जो पूर्व दो से प्राप्त होता है, और बाद के दो में काफी योगदान देता है) लौकिक केक का एक टुकड़ा है !!!

डॉस बैच कमांड:

 echo %DATE% %TIME% && echo %DATE% %TIME% | gawk -F"[ /:.]" "{printf(""""%s%02d%02d-%02d%02d%02d\n"""", $4, $3, $2, $5, $6, $7);}" 

प्रिंटों:

 Tue 04/09/2012 10:40:38.25 20120904-104038 

अब यह पूरी कहानी नहीं है … मैं सिर्फ printf कथन में अपने लॉग-फाइल नाम के आलसी और कठोर-कोड होने जा रहा हूं, क्योंकि यह सरल है … लेकिन अगर कोई जानता है कि कैसे सेट करना है AWK के आउटपुट के लिए% NOW% variable (अब एक "सामान्य" समारोह की हिम्मत छेड़ने) तो मैं सभी कान हूँ


संपादित करें:

स्टैक ओवरफ्लो पर एक त्वरित खोज पहेली के उस अंतिम टुकड़े में भरी, बैश बैक के बराबर बैटिक्स

इसलिए, डॉस बैच की ये तीन पंक्तियां:

 echo %DATE% %TIME% | awk -F"[ /:.]" "{printf(""""%s%02d%02d-%02d%02d%02d\n"""", $4, $3, $2, $5, $6, $7);}" >%temp%\now.txt set /p now=<%temp%\now.txt echo %now% 

उत्पादित करें:

 20120904-114434 

तो अब मैं अपने एसक्यूएल सर्वर स्थापना (2005+) स्क्रिप्ट द्वारा निर्मित लॉग-फाइल के नाम पर एक दिनांक समय शामिल कर सकता हूँ:

 sqlcmd -S .\SQLEXPRESS -d MyDb -e -i MyTSqlCommands.sql >MyTSqlCommands.sql.%now%.log 

और मैं फिर से एक खुश कैंपर हूँ (जीवन को छोड़कर यूनिक्स पर एसओओओओओ बहुत आसान था)।

फ़ाइल नामों में एक स्थान कानूनी है। यदि आप उद्धरण में अपना पथ और फ़ाइल नाम डालते हैं, तो यह केवल उड़ सकता है बैच फ़ाइल में मैं इसका उपयोग कर रहा हूं:

 svnadmin hotcopy "C:\SourcePath\Folder" "f:\DestPath\Folder%filename%" 

% Filename% में रिक्त स्थान हैं, तो इससे कोई फर्क नहीं पड़ता