मैं फ़ाइलों को एक फ़ोल्डर से दूसरे फ़ोल्डर में कॉपी करना चाहता हूं जो वीबीएस का उपयोग करके एक विशिष्ट तिथि सीमा के बीच आता है।

उदाहरण के लिए मैं 06/11/2009 से 06/12/2010 तक फाइलों की प्रतिलिपि बनाना चाहता हूं। मैं इसे वीबी स्क्रिप्ट में कैसे कर सकता हूं।

0
Ricky 5 जुलाई 2011, 11:28
हे जीन, मैं वास्तव में उन लोगों का आभारी हूं जिन्होंने अब तक मेरी मदद की लेकिन मुझे नहीं पता कि जवाब कैसे स्वीकार किया जाए। कृपया क्या तुम मुझे बता सकते हो????
 – 
Ricky
5 जुलाई 2011, 14:49
ठीक है दोस्तों बहुत बहुत धन्यवाद। हां, मैंने इसे पहले किया है लेकिन इसका उद्देश्य नहीं पता था। एक बार फिर धन्यवाद।
 – 
Ricky
5 जुलाई 2011, 15:10

2 जवाब

सबसे बढ़िया उत्तर

क्या डब्लूएमआई एक विकल्प है? अगर ऐसा है, तो यहां अरे, स्क्रिप्टिंग गाई! लेख मैं एक निर्दिष्ट तिथि से पुरानी सभी फाइलों को कैसे हटा सकता हूं?:

strComputer = "." 

strFolder = "C:\FromFolder"
strNewFolder = "C:\ToFolder"

strDateFrom = "20090611000000.000000+00" ' 06/11/2009
strDateTo   = "20100612000000.000000+00" ' 06/12/2010


Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colFiles = oWMI.ExecQuery _ 
    ("ASSOCIATORS OF {Win32_Directory.Name='" & strFolder & "'} WHERE " _ 
        & "ResultClass = CIM_DataFile")

For Each oFile in colFiles
    If oFile.CreationDate > strDateFrom And oFile.CreationDate < strDateTo Then
        'WScript.Echo "Full path:     " & oFile.Name
        'WScript.Echo "Creation date: " & oFile.CreationDate

        oFile.Copy strNewFolder & "\" & oFile.FileName & "." & oFile.Extension
        oFile.Delete
    End If
Next

यहां थोड़ा अलग प्रकार है जहां WMI क्वेरी में दिनांक जांच शामिल हैं:

strComputer = "."
strDateFrom = "20090611000000.000000+00" ' 06/11/2009
strDateTo   = "20100612000000.000000+00" ' 06/12/2010
strNewFolder = "C:\ToFolder"
iFlags = 48

Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colFiles = oWMI.ExecQuery( _
    "SELECT * FROM CIM_DataFile" & _
    " WHERE Drive = 'C:' AND Path = '\\FromFolder\\'" & _
    " AND CreationDate >= '" & strDateFrom & "'" & _
    " AND CreationDate <= '" & strDateTo & "'" _
    ,,iFlags)

For Each oFile in colFiles
    'WScript.Echo "Full path:     " & oFile.Name
    'WScript.Echo "Creation date: " & oFile.CreationDate

    oFile.Copy strNewFolder & "\" & oFile.FileName & "." & oFile.Extension
    oFile.Delete
Next

कुछ नोट्स:

  • स्क्रिप्ट गैर-पुनरावर्ती है, अर्थात, यह केवल स्रोत फ़ोल्डर से ही फ़ाइलें ले जाती है, न कि इसके सबफ़ोल्डर्स।
  • तिथियां यूटीसी प्रारूप में निर्दिष्ट हैं। इस प्रारूप के बारे में अधिक जानकारी मेरे द्वारा लिंक किए गए लेख में है।
  • WMI में फ़ाइलों और फ़ोल्डरों को स्थानांतरित करने के तरीके शामिल नहीं हैं, इसलिए स्क्रिप्ट की प्रतिलिपियाँ तब फ़ाइलों को हटा देती हैं।
1
Helen 5 जुलाई 2011, 15:01
@ जीन-फ्रैंकोइस: हाँ, यह डब्लूएमआई डेटाटाइम प्रारूप है। इसे SWbemDateTime ऑब्जेक्ट जैसा दिखाया गया है यहां, लेकिन मैं बहुत आलसी था इसे स्क्रिप्ट में जोड़ें - इसे ओपी तक रहने दें।
 – 
Helen
5 जुलाई 2011, 16:08
काफी उचित। मुझे चीजों को करने का यह WMI तरीका नहीं पता था। +1
 – 
Jean-François Corbett
5 जुलाई 2011, 16:34

आप FileSystemObject का उपयोग कर सकते हैं। फ़ाइल बनाने की तारीख निम्नलिखित मिलेगी:

   Dim fso, myfile, d
   Set fso = CreateObject("Scripting.FileSystemObject")

   Set myfile = fso.GetFile("something.dat")
   d = myfile.DateCreated
   MsgBox d

अधिक पढ़ें यहां

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

0
Jean-François Corbett 5 जुलाई 2011, 15:08