मेरे पास एक साधारण वीबीएस स्क्रिप्ट है जो प्रदर्शित करती है कि फ़ाइल अपलोड की गई है:

Set objArgs = WScript.Arguments
messageText = objArgs(0)
SDateTime = WeekdayName(Weekday(Date)) & ", " & MonthName(Month(Date()), False) & " " & Day(Date ()) & ", " & Year(Date())
MsgBox messageText & (DateAdd("n",1,Now())), 16

मैं जो कुछ ढूंढ रहा हूं वह वह जानकारी है जो संदेश बॉक्स में है:

MsgBox messageText & (DateAdd("n",1,Now())), 16

लॉग फ़ाइल में संलग्न हो जाएगा, इसलिए मैं यह देखने के लिए वापस आऊंगा कि प्रत्येक फ़ाइल कब अपलोड की गई थी।

यह बैट फ़ाइल है।

@echo off
:loop
set "datafolder=xxx"
set "tempdatafolder=%temp%\tempdata"
set switches=/r:0 /w:0 /mir /ns /nc /ndl /np /njh /njs


robocopy %switches% "%datafolder%" "%tempdatafolder%"

if exist "%datafolder%\*xxx*.xlsx" (
cscript n:\xxx\xxx\xxx.vbs "xxx READY!!  "
echo XXX IS READY FOR PROSECCING
EXIT
) else (
timeout 5
goto :loop
)

goto :loop
1
user7446795 17 मार्च 2017, 14:41

1 उत्तर

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

.vbs फ़ाइल

Option Explicit 

Dim messageText
    If WScript.Arguments.Count > 0 Then 
        messageText = WScript.Arguments.Item(0) & " " & DateAdd("n", 1, Now())
        MsgBox messageText, 16
        WScript.StdOut.WriteLine messageText 
    End If 

.bat फ़ाइल के अंदर

>>"logFile.log" cscript //nologo n:\xxx\xxx\xxx.vbs "xxx READY!!  "

यानी .vbs फाइल को न सिर्फ मैसेज बॉक्स दिखाएं, बल्कि कंसोल पर टेक्स्ट भी लिखें। बैच फ़ाइल के अंदर cscript निष्पादन को पुनर्निर्देशित किया जाता है, इसलिए इसका आउटपुट लॉग फ़ाइल में जोड़ा जाएगा।

एक और (बेहतर नहीं) विकल्प (यदि आप डायलॉग आइकन के बिना रह सकते हैं) आउटपुट पद्धति को बदलना और .vbs स्क्रिप्ट को दो बार कॉल करना है। इसलिए

.vbs फ़ाइल

Option Explicit 

Dim messageText
    If WScript.Arguments.Count > 0 Then 
        messageText = WScript.Arguments.Item(0) & " " & DateAdd("n", 1, Now())
        WScript.Echo messageText
    End If 

.bat फ़ाइल के अंदर

>>"logFile.log" cscript //nologo n:\xxx\xxx\xxx.vbs "xxx READY!!  "    
wscript n:\xxx\xxx\xxx.vbs "xxx READY!!  "

जब .vbs फ़ाइल को wscript.exe के तहत निष्पादित किया जाता है, तो WScript.Echo विधि एक संदेश बॉक्स दिखाती है, लेकिन जब cscript.exe के तहत निष्पादित किया जाता है तो यह पाठ को कंसोल पर आउटपुट करता है (जो कि में पुनर्निर्देशित होता है) बैच फ़ाइल)।

4
MC ND 17 मार्च 2017, 15:14
LogFile.log कहाँ बनाया जाएगा?
 – 
user7446795
17 मार्च 2017, 15:06
1
@MRSample, जहां आप इंगित करते हैं, >>"x:\somewhere\file.log" एक पूर्ण पथ के लिए, >>".\file.log" वर्तमान सक्रिय निर्देशिका के सापेक्ष पथ के लिए, >>"%~dp0\file.log" उस फ़ोल्डर के लिए जहां बैच फ़ाइल संग्रहीत है, ... आप तय करें
 – 
MC ND
17 मार्च 2017, 15:11
आप अपने बयानों को अपने Dims के तहत क्यों इंडेंट करते हैं? यह बहुत परेशान करने वाला है।
 – 
user692942
17 मार्च 2017, 20:44
@Lankymart, घोषित तत्वों का उपयोग करने वाले कोड से स्पष्ट रूप से अलग-अलग घोषणा करने की आदत। मेरे पास अधिकांश घोषणाओं के लिए जावास्क्रिप्ट के निचले कैमेलकेस नामकरण का उपयोग करने का उन्माद भी है। मुझे पता है कि मैं वीबीस्क्रिप्ट सम्मेलनों का पालन नहीं करता, लेकिन मेरे लिए अलग-अलग घोषणाओं के साथ कोड को पढ़ना और उसका पालन करना आसान है और वेरिएबल को बाकी वीबीस्क्रिप्ट भाषा तत्वों से अलग करने के बजाय नामकरण करना आसान है।
 – 
MC ND
17 मार्च 2017, 22:37
@Lankymart, jarring. पहली बार मैंने इसे देखा, धन्यवाद, मेरी शब्दावली के लिए एक और।
 – 
MC ND
17 मार्च 2017, 22:43