मैंने फ़ंक्शन को सत्यापित करने के लिए एक कंसोल एप्लिकेशन बनाया है और यह एप्लिकेशन मुझे vbscript का उपयोग करके निष्पादित करने की आवश्यकता है। इस exe निष्पादित करने के बाद मैं एक निकास कोड वापस करना चाहता हूँ कि समारोह सफलता वापस या नहीं। मैं .NET में स्थिति या निकास कोड कैसे वापस कर सकता हूं?exe चलाने के बाद निकास कोड कैसे वापस करें?
उत्तर
मुझे लगता है कि आप या तो सी # या वीबी.नेट लिख रहे हैं। किसी भी मामले में आम तौर पर लोगों के पास एक मुख्य कार्य होता है जो कुछ भी नहीं देता है, लेकिन आप इसे निकास कोड का प्रतिनिधित्व करने के लिए एक पूर्णांक वापस करने के लिए बदल सकते हैं।
सी # देखें this MSDN page।
आप कर सकते हैं:
static int Main()
{
//...
return 0;
}
VB.NET के लिए this MSDN page देखते हैं।
आप कर सकते हैं:
Module mainModule
Function Main() As Integer
'....
'....
Return returnValue
End Function
End Module
को संभाल लें क्या मैं vbscript का उपयोग करके मुख्य विधि वापसी मान तक पहुंच सकता हूं? – JEMI
@ जेएमआईआई आप सक्षम होना चाहिए। आपको बिल्कुल बता नहीं सकता कि आपके कोड के बिना कैसे। – gideon
यह कोड स्थैतिक int मुख्य (स्ट्रिंग [] तर्क) { var ruleManager = new नियम प्रबंधक(); int स्थिति = ruleManager.ExecuteRule(); वापसी की स्थिति; } – JEMI
@gideon के रूप में टिप्पणी की, अपने निष्पादन में आप return
बयान संख्या वापस जाने के लिए उपयोग करना चाहिए।
अपनी स्क्रिप्ट में, कृपया इस निष्पादन योग्य को कॉल करने के बाद %ERRORLEVEL%
पढ़ें। यही वह स्थान है जहां विंडोज रिटर्न कोड रखता है।
इसके अलावा @gideon करने के लिए आप भी
Environment.ExitCode = theExitCode;
सेट कर सकते हैं अपने कोड और बाहर निकलने के अन्य भागों सीधे अगर कुछ वास्तव में बुरा
को देखते हुए इस सी # कार्यक्रम हुआ है में:
class MainReturnValTest {
static int Main(string[] args) {
int rv = 0;
if (1 == args.Length) {
try {
rv = int.Parse(args[0]);
}
catch(System.FormatException e) {
System.Console.WriteLine("bingo: '{1}' - {0}", e.Message, args[0]);
rv = 1234;
}
}
System.Console.WriteLine("check returns {0}.", rv);
return rv;
}
}
नमूना रन:
check.exe
check returns 0.
check.exe 15
check returns 15.
check.exe nonum
bingo: 'nonum' Input string was not in a correct format.
check returns 1234.
और इस VBScript स्क्रिप्ट (न्यूनतम करने के लिए कम, उत्पादन में ऐसा नहीं है):
Option Explicit
Const WshFinished = 1
Dim goWSH : Set goWSH = CreateObject("WScript.Shell")
Dim sCmd : sCmd = "..\cs\check.exe"
If 1 = WScript.Arguments.Count Then sCmd = sCmd & " " & WScript.Arguments(0)
WScript.Echo sCmd
Dim nRet : nRet = goWSH.Run(sCmd, 0, True)
WScript.Echo WScript.ScriptName, "would return", nRet
With goWSH.Exec(sCmd)
Do Until .Status = WshFinished : Loop
WScript.Echo "stdout of check.exe ==>" & vbCrLf, .Stdout.ReadAll()
nRet = .ExitCode
WScript.Echo ".ExitCode of check.exe", nRet
End With
' !! http://stackoverflow.com/questions/2042558/how-do-i-get-the-errorlevel-variable-set-by-a-command-line-scanner-in-my-c-sha
WScript.Echo "Errorlevel:", Join(Array(goWSH.Environment("PROCESS")("ERRORLEVEL"), goWSH.ExpandEnvironmentStrings("%ERRORLEVEL%"), "???"), " - ")
WScript.Echo WScript.ScriptName, "returns", nRet
WScript.Quit nRet
नमूना रन:
cscript 13921064.vbs
..\cs\check.exe
13921064.vbs would return 0
stdout of check.exe ==>
check returns 0.
.ExitCode of check.exe 0
Errorlevel: - %ERRORLEVEL% - ??? <=== surprise, surprise
13921064.vbs returns 0
echo %ERRORLEVEL%
0
cscript 13921064.vbs nonum & echo %ERRORLEVEL%
..\cs\check.exe nonum
13921064.vbs would return 1234
stdout of check.exe ==>
bingo: 'nonum' Input string was not in a correct format.
check returns 1234.
.ExitCode of check.exe 1234
Errorlevel: - %ERRORLEVEL% - ???
13921064.vbs returns 1234
0 <=== surprise, surprise
DNV35 E:\trials\SoTrials\answers\13927081\vbs
echo %ERRORLEVEL%
1234
आप देखेंगे
- WScript .Quit आपकी स्क्रिप्ट
- से निकास कोड वापस करने का तरीका है। आप Run या .xec का उपयोग कर एक और प्रक्रिया शुरू करते हैं।
- .Run बुलाया प्रक्रिया
- .Exec सेट .ExitCode (समाप्ति के बाद!)
- अपनी स्क्रिप्ट में% errorlevel% तक पहुँचना व्यर्थ है (@LexLi)
cscript 13921064.vbs nonum & echo %ERRORLEVEL%
बेकार भी है के निकास कोड देता है
क्या आप अपना कोड कृपया दिखा सकते हैं? – gideon
मैन्युअल रूप से एक कंसोल डालें। अपने कोड में राइटलाइन करें और प्रक्रिया से मान पढ़ें। मानक आउटपुट या आउटपुटडेटा रीसाइज्ड – Amitd