2010-01-21 9 views
17

मैं फ़ाइल दिनांक प्राप्त करने के लिए निम्न आदेश का उपयोग कर रहा हूं। हालांकि, fileDate वैरिएबल एक अलग सर्वर (विंडोज सर्वर 2003) में स्थानांतरित होने के बाद से रिक्त मूल्य लौटा रहा है।विंडोज कमांड लाइन पर फ़ाइल की अंतिम संशोधित तिथि कैसे प्राप्त करें?

FOR /f %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a 

क्या फ़ाइल तिथि प्राप्त करने के लिए कोई और अधिक विश्वसनीय तरीका है?

उत्तर

31

, %~ta वाक्य रचना के लिए call /?

for %a in (MyFile.txt) do set FileDate=%~ta 
+5

+1। यह वास्तव में सही है। 'डीआईआर' के उत्पादन को पार्स करना सबसे अच्छा पागलपन है। साइड नोट: बैच फ़ाइल में, '%' संकेतों को दोगुना करें। – Joey

+0

धन्यवाद, एक और सवाल: केवल तारीख का हिस्सा कैसे प्राप्त करें। क्या निम्नलिखित वाक्यविन्यास पर्याप्त विश्वसनीय है या क्या कोई बेहतर तरीका है। फ़ाइलडेट =% फ़ाइलडेट सेट करें: ~ 0,10% –

+1

यदि आप अपनी अंतरराष्ट्रीय सेटिंग्स बदलते हैं तो यह काम नहीं कर सकता है, लेकिन अन्यथा यह ठीक होना चाहिए –

2

यह Vista पर मेरे लिए काम करता है। कुछ बातें की कोशिश करने के लिए:

  1. खोजने आदेश का पूरी तरह से योग्य पथ के साथ find बदलें। find एक आम उपकरण नाम है। एक यूनिक्स खोज है जो विंडोज अंतर्निहित खोज से बहुत अलग है। इस तरह:
    FOR /f %%a in ('dir ^|%windir%\system32\find.exe /i "myfile.txt"') DO SET fileDate=%%a

  2. cmd.exe विंडो में कमांड के आउटपुट की जांच करें। ऐसा करने के लिए, आपको %% को% के साथ प्रतिस्थापित करने की आवश्यकता है।
    FOR /f %a in ('dir ^|c:\windows\system32\find.exe /i "myfile.txt"') DO SET fileDate=%a
    इससे आपको कुछ विचार मिल सकते हैं।

  3. कि ऊपर से पता चलता है के रूप में खाली, फिर, एक कमांड प्रॉम्प्ट पर, इस प्रयास करें:

    dir | c:\windows\system32\find.exe /i "myfile.txt"

इससे यह प्रदर्शित करना चाहिए कि तुम क्या देखने के लिए की जरूरत है।

यदि आप अभी भी इसे से नहीं समझ सकते हैं, तो आप इन आदेशों से जो कुछ देखते हैं उसे शामिल करने के लिए अपनी पोस्ट संपादित करें और कोई आपकी मदद करेगा।

+0

मेरा स्टेटमेंट और (चरण 1 और 2) मेरे कंप्यूटर पर काम करता है और कोई अन्य जीत सर्वर 2003 जो मैं अपना हाथ प्राप्त कर सकता हूं। क्या यह एक मुद्दा हो सकता है जहां यह सेवा आईडी के तहत चलाया जाता है और शेड्यूलर द्वारा ट्रिगर किया जाता है? –

+0

हाँ यह हो सकता है। खोज प्रोग्राम एक अलग सेवा आईडी के लिए अलग हो सकता है, क्योंकि इसका एक अलग पथ है। उत्पादन को कैप्चर और जांचने के लिए सेवा आईडी के तहत इन आदेशों को चलाने के लिए सर्वश्रेष्ठ। – Cheeso

+1

कुछ साल पहले हमारे पास कमांड प्रोसेसर की विभिन्न भाषा की वजह से डीआईआर कमांड के आउटपुट की बैच प्रसंस्करण के संबंध में कुछ समान मुद्दे थे (हमारे मामले में, हमारी बैच फ़ाइल Win2000 अंग्रेजी और स्पेनिश में काम करती थी, लेकिन जर्मन में विफल रही थी)। –

0

आउटपुट (बिल्कुल)dir myfile.txt वर्तमान निर्देशिका में देते हैं? यदि आप डिलीमीटर सेट करते हैं तो क्या होता है?

FOR /f "tokens=1,2* delims= " %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a 

(delims= के बाद अंतरिक्ष ध्यान दें)

1

आप एक फाइल को भी VBScript का उपयोग कर संशोधित कर सकते हैं तिथि (%a साथ %%a की जगह जीवन को आसान, आप कमांड लाइन से ऐसा कर सकते हैं बनाने के लिए)

Set objFS=CreateObject("Scripting.FileSystemObject") 
Set objArgs = WScript.Arguments 
strFile= objArgs(0) 
WScript.Echo objFS.GetFile(strFile).DateLastModified 

उपरोक्त को mygetdate के रूप में सहेजें।vbs और बैच फ़ाइल में उपयोग के लिए बदलें %%% को कमांड लाइन पर

c:\test> cscript //nologo mygetdate.vbs myfile 
6

दर्ज आप फ़ाइल प्राप्त करने के लिए यह

forfiles /M myfile.txt /C "cmd /c echo @fdate @ftime" 
0

उपयोगी संदर्भ क्या कर सकते हैं एक बैच फ़ाइल का उपयोग कर गुण, अंतिम संशोधित समय शामिल है:

FOR %%? IN ("C:\somefile\path\file.txt") DO (
    ECHO File Name Only  : %%~n? 
    ECHO File Extension  : %%~x? 
    ECHO Name in 8.3 notation : %%~sn? 
    ECHO File Attributes  : %%~a? 
    ECHO Located on Drive  : %%~d? 
    ECHO File Size   : %%~z? 
    ECHO Last-Modified Date : %%~t? 
    ECHO Parent Folder  : %%~dp? 
    ECHO Fully Qualified Path : %%~f? 
    ECHO FQP in 8.3 notation : %%~sf? 
    ECHO Location in the PATH : %%~dp$PATH:? 
) 
संबंधित मुद्दे